PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.5.5
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.5.5
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 / SiteGround.php
nitropack / classes / Integration / Hosting Last commit date
Closte.php 4 years ago Cloudways.php 4 years ago Flywheel.php 4 years ago GoDaddyWPaaS.php 4 years ago GridPane.php 4 years ago Hosting.php 4 years ago Kinsta.php 4 years ago Pagely.php 4 years ago PagelyCachePurge.php 4 years ago SiteGround.php 4 years ago WPEngine.php 4 years ago
SiteGround.php
60 lines
1 <?php
2
3 namespace NitroPack\Integration\Hosting;
4
5 class SiteGround extends Hosting {
6 const STAGE = "very_early";
7
8 public static function detect() {
9 $configFilePath = nitropack_get_wpconfig_path();
10 if (!$configFilePath) return false;
11 return strpos(file_get_contents($configFilePath), 'Added by SiteGround WordPress management system') !== false;
12 }
13
14 public function init($stage) {
15 if ($this->getHosting() == "siteground") {
16 add_action('nitropack_execute_purge_url', [$this, 'purgeUrl']);
17 add_action('nitropack_execute_purge_all', [$this, 'purgeAll']);
18 add_action('nitropack_early_cache_headers', [$this, 'setCacheControl']);
19 add_action('nitropack_cacheable_cache_headers', [$this, 'allowProxyCache']);
20 add_action('nitropack_cachehit_cache_headers', [$this, 'allowProxyCache']);
21 }
22 }
23
24 public function purgeUrl($url) {
25 $urlObj = new \NitroPack\Url($url);
26 $purgeUrl = $urlObj->getHost() . $urlObj->getPath();
27 if ($urlObj->getQuery()) {
28 $purgeUrl .= "(.*)";
29 }
30
31 $purgeUrl = preg_replace("/^www\./", "", $purgeUrl);
32 $purgeUrl = "http://" . $purgeUrl;
33
34 try {
35 $hosts = ['127.0.0.1'];
36 $purger = new \NitroPack\SDK\Integrations\Varnish($hosts, 'PURGE');
37 $purger->purge($purgeUrl);
38 } catch (\Exception $e) {}
39
40 return true;
41 }
42
43 public function purgeAll() {
44 $siteConfig = nitropack_get_site_config();
45 if ($siteConfig && !empty($siteConfig["home_url"])) {
46 return nitropack_siteground_purge_url($siteConfig["home_url"]);
47 }
48 return false;
49 }
50
51 public function setCacheControl() {
52 header("Cache-Control: public, max-age=0, s-maxage=3600"); // needs to be like that instead of Cache-Control: no-cache in order to allow caching in the provided reverse proxy, but prevent the browsers from doing so
53 }
54
55 public function allowProxyCache() {
56 $this->setCacheControl();
57 header('X-Cache-Enabled: True');
58 }
59 }
60