PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / trunk
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization vtrunk
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 1 month ago Fastly.php 1 year ago LiteSpeed.php 1 year ago NestifyCDN.php 1 year ago NginxFastCgi.php 1 year ago Sucuri.php 1 year ago
Cloudflare.php
65 lines
1 <?php
2
3 namespace NitroPack\Integration\Server;
4
5 use NitroPack\Integration\Hosting\WPEngine;
6
7 // We need this to control Cloudflare in addition to any other proxy potentially provided by the origin host company
8 class Cloudflare {
9 const STAGE = "very_early";
10
11 public static function detect() {
12 return (!empty($_SERVER["HTTP_CF_CONNECTING_IP"]) && $_SERVER["HTTP_CF_CONNECTING_IP"] != "0.0.0.0")
13 || !empty($_SERVER["HTTP_CF_RAY"])
14 || !empty($_SERVER["HTTP_CF_IPCOUNTRY"]);
15 }
16
17 public static function isCacheEnabled() {
18 $siteConfig = get_nitropack()->getSiteConfig();
19 if ($siteConfig && !empty($siteConfig["hosting"]) && $siteConfig["hosting"] == "rocketnet") {
20 return self::detect();
21 }
22 return self::detect() && !empty($_SERVER["HTTP_SEC_CH_UA_MOBILE"]);
23 }
24
25 public function init($stage) {
26 if (self::detect()) {
27 nitropack_header("Accept-CH: Sec-CH-UA-Mobile");
28
29 if (self::isCacheEnabled()) {
30 add_action('nitropack_cacheable_cache_headers', [$this, 'allowProxyCache'], PHP_INT_MAX-1);
31 add_action('nitropack_cachehit_cache_headers', [$this, 'allowProxyCache'], PHP_INT_MAX-1);
32 } else {
33 add_action('nitropack_cacheable_cache_headers', [$this, 'preventProxyCache'], PHP_INT_MAX-1);
34 add_action('nitropack_cachehit_cache_headers', [$this, 'preventProxyCache'], PHP_INT_MAX-1);
35 }
36 }
37 }
38
39 public function allowProxyCache() {
40 $siteConfig = get_nitropack()->getSiteConfig();
41 $cfTtl = 15;
42 $addVaryHeader = true;
43
44 if (!empty($siteConfig["hosting"]) && $siteConfig["hosting"] == "rocketnet") {
45 $cfTtl = 300;
46 $addVaryHeader = false;
47 } elseif (!empty($siteConfig["isApoActive"])) {
48 $cfTtl = 3600;
49 $addVaryHeader = false;
50 } elseif (WPEngine::isEfpc()) {
51 $cfTtl = 300;
52 }
53
54 if ($addVaryHeader) {
55 nitropack_header( "Vary: sec-ch-ua-mobile");
56 }
57
58 nitropack_header( "Cloudflare-CDN-Cache-Control: public, max-age=0, s-maxage={$cfTtl}, stale-while-revalidate=3600" );
59 }
60
61 public function preventProxyCache() {
62 nitropack_header("Cloudflare-CDN-Cache-Control: no-cache");
63 }
64 }
65