PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.19.6
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.19.6
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 / Hosting / WPEngine.php
nitropack / classes / Integration / Hosting Last commit date
Closte.php 1 year ago Cloudways.php 1 month ago DreamHost.php 1 year ago Flywheel.php 1 year ago GoDaddyWPaaS.php 1 year ago GridPane.php 1 year ago Hosting.php 1 year ago Kinsta.php 1 year ago Pagely.php 1 year ago PagelyCachePurge.php 1 year ago Pantheon.php 1 year ago Pressable.php 1 year ago Raidboxes.php 1 year ago RocketNet.php 1 year ago Savvii.php 1 year ago SiteGround.php 3 months ago SpinupWp.php 1 year ago Vimexx.php 1 year ago WPEngine.php 1 month ago WPX.php 1 year ago WPmudev.php 1 year ago
WPEngine.php
103 lines
1 <?php
2
3 namespace NitroPack\Integration\Hosting;
4
5 class WPEngine extends Hosting {
6 const STAGE = "very_early";
7
8 private $urlPurges = [];
9 private $fullPurge = false;
10 private $readyToPurge = false;
11
12 public static function detect() {
13 return !!getenv('IS_WPE')
14 || !!getenv('WPENGINE_ACCOUNT')
15 || (\NitroPack\WordPress\NitroPack::isWpCli() && strpos($_SERVER['DOCUMENT_ROOT'], '/nas/content/live/') === 0);
16 }
17
18 public static function isEfpc() {
19 return !empty($_SERVER['HTTP_X_EFPC_ENABLED']);
20 }
21
22 public function init($stage) {
23 if (self::detect()) {
24 switch ($stage) {
25 case "very_early":
26 if (getenv( 'HTTP_GEOIP_COUNTRY_CODE' )) {
27 add_action('np_set_cookie_filter', function() {
28 \NitroPack\SDK\NitroPack::addCookieFilter([$this, 'addGeotCookies']);
29 });
30 }
31
32 define("NITROPACK_USE_MICROTIMEOUT", 20000);
33
34 if (isset($_COOKIE["wpengine_no_cache"]) || isset($_SERVER["HTTP_AUTOUPDATER"])) {
35 add_filter("nitropack_passes_cookie_requirements", function() {
36 nitropack_header("X-Nitro-Disabled-Reason: WP Engine SPM bypass");
37 return false;
38 });
39 }
40 \NitroPack\ModuleHandler::initSemAcquire();
41 return true;
42 case "early":
43 \NitroPack\ModuleHandler::initSemRelease();
44 add_action('nitropack_execute_purge_url', [$this, 'purgeUrl']);
45 add_action('nitropack_execute_purge_all', [$this, 'purgeAll']);
46 break;
47 }
48 }
49 }
50
51 public function purgeUrl($url) {
52 try {
53 $handler = function($paths) use($url) {
54 $wpe_path = parse_url($url, PHP_URL_PATH);
55 $wpe_query = parse_url($url, PHP_URL_QUERY);
56 $varnish_path = $wpe_path;
57 if (!empty($wpe_query)) {
58 $varnish_path .= '?' . $wpe_query;
59 }
60 if ($url && count($paths) == 1 && $paths[0] == ".*") {
61 return array($varnish_path);
62 }
63 return $paths;
64 };
65 add_filter( 'wpe_purge_varnish_cache_paths', $handler );
66 if (class_exists("\WpeCommon")) { // We need to have this check for clients that switch hosts
67 \WpeCommon::purge_varnish_cache();
68 if (self::isEfpc()) {
69 \WpeCommon::clear_cdn_cache();
70 }
71 }
72 remove_filter( 'wpe_purge_varnish_cache_paths', $handler );
73 } catch (\Exception $e) {
74 // WPE exception
75 }
76 }
77
78 public function purgeAll() {
79 try {
80 if (class_exists("\WpeCommon")) { // We need to have this check for clients that switch hosts
81 \WpeCommon::purge_varnish_cache();
82 if (self::isEfpc()) {
83 \WpeCommon::clear_cdn_cache();
84 }
85 }
86 } catch (\Exception $e) {
87 // WPE exception
88 }
89 }
90
91 public function addGeotCookies(&$cookies) {
92 $cookies['nitro_geot_country_code'] = getenv( 'HTTP_GEOIP_COUNTRY_CODE' );
93 $cookies['nitro_geot_country_code3'] = getenv( 'HTTP_GEOIP_COUNTRY_CODE3' );
94 $cookies['nitro_geot_country_name'] = getenv( 'HTTP_GEOIP_COUNTRY_NAME' );
95 $cookies['nitro_geot_latitude'] = getenv( 'HTTP_GEOIP_LATITUDE' );
96 $cookies['nitro_geot_longitude'] = getenv( 'HTTP_GEOIP_LONGITUDE' );
97 $cookies['nitro_geot_area_code'] = getenv( 'HTTP_GEOIP_AREA_CODE' );
98 $cookies['nitro_geot_region'] = getenv( 'HTTP_GEOIP_REGION' );
99 $cookies['nitro_geot_city'] = getenv( 'HTTP_GEOIP_CITY' );
100 $cookies['nitro_geot_postal_code'] = getenv( 'HTTP_GEOIP_POSTAL_CODE' );
101 }
102 }
103