PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.16.1
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.16.1
1.19.8 1.19.7 1.19.6 1.19.5 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.12.0 1.13.0 1.14.0 1.15.0 1.15.1 1.15.2 1.15.3 1.16.0 1.16.1 1.16.2 1.16.3 1.16.4 1.16.5 1.16.6 1.16.7 1.16.8 1.17.0 1.17.6 1.17.7 1.17.8 1.17.9 1.18.0 1.18.1 1.18.2 1.18.3 1.18.4 1.18.5 1.18.6 1.18.7 1.18.8 1.18.9 1.19.0 1.19.1 1.19.2 1.19.3 1.19.4 1.3.19 1.3.20 1.4.0 1.4.1 1.5.0 1.5.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.16 1.5.17 1.5.18 1.5.19 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.7.0 1.7.1 1.8.0 1.8.1 1.8.3 1.9.0 1.9.1 1.9.2
nitropack / classes / Integration / Server / Cloudflare.php
nitropack / classes / Integration / Server Last commit date
Cloudflare.php 2 years ago Fastly.php 4 years ago LiteSpeed.php 3 years ago NginxFastCgi.php 2 years ago Sucuri.php 4 years ago
Cloudflare.php
53 lines
1 <?php
2
3 namespace NitroPack\Integration\Server;
4
5 // We need this to control Cloudflare in addition to any other proxy potentially provided by the origin host company
6 class Cloudflare {
7 const STAGE = "very_early";
8
9 public static function detect() {
10 return (!empty($_SERVER["HTTP_CF_CONNECTING_IP"]) && $_SERVER["HTTP_CF_CONNECTING_IP"] != "0.0.0.0")
11 || !empty($_SERVER["HTTP_CF_RAY"])
12 || !empty($_SERVER["HTTP_CF_IPCOUNTRY"]);
13 }
14
15 public static function isCacheEnabled() {
16 $siteConfig = get_nitropack()->getSiteConfig();
17 if ($siteConfig && !empty($siteConfig["hosting"]) && $siteConfig["hosting"] == "rocketnet") {
18 return self::detect();
19 }
20 return self::detect() && !empty($_SERVER["HTTP_SEC_CH_UA_MOBILE"]);
21 }
22
23 public function init($stage) {
24 if (self::detect()) {
25 nitropack_header("Accept-CH: Sec-CH-UA-Mobile");
26
27 if (self::isCacheEnabled()) {
28 add_action('nitropack_cacheable_cache_headers', [$this, 'allowProxyCache'], PHP_INT_MAX-1);
29 add_action('nitropack_cachehit_cache_headers', [$this, 'allowProxyCache'], PHP_INT_MAX-1);
30 } else {
31 add_action('nitropack_cacheable_cache_headers', [$this, 'preventProxyCache'], PHP_INT_MAX-1);
32 add_action('nitropack_cachehit_cache_headers', [$this, 'preventProxyCache'], PHP_INT_MAX-1);
33 }
34 }
35 }
36
37 public function allowProxyCache() {
38 $siteConfig = get_nitropack()->getSiteConfig();
39 if ($siteConfig && !empty($siteConfig["hosting"]) && $siteConfig["hosting"] == "rocketnet") {
40 nitropack_header( "Cloudflare-CDN-Cache-Control: public, max-age=0, s-maxage=300, stale-while-revalidate=3600" );
41 } else if ($siteConfig && !empty($siteConfig["isApoActive"])) {
42 nitropack_header("Cloudflare-CDN-Cache-Control: public, max-age=0, s-maxage=3600, stale-while-revalidate=3600");
43 } else {
44 nitropack_header("Vary: sec-ch-ua-mobile");
45 nitropack_header("Cloudflare-CDN-Cache-Control: public, max-age=0, s-maxage=15, stale-while-revalidate=3600");
46 }
47 }
48
49 public function preventProxyCache() {
50 nitropack_header("Cloudflare-CDN-Cache-Control: no-cache");
51 }
52 }
53