PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.18.3
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.18.3
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 / NginxFastCgi.php
nitropack / classes / Integration / Server Last commit date
Cloudflare.php 1 year 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
NginxFastCgi.php
83 lines
1 <?php
2
3 namespace NitroPack\Integration\Server;
4
5 use NitroPack\SDK\StorageDriver\Disk;
6 use NitroPack\Url\Url;
7
8 class NginxFastCgi {
9 const STAGE = "very_early";
10
11 public function isActive() {
12 if (
13 defined('NITROPACK_NGINX_FAST_CGI_CACHE_PATH') &&
14 is_dir(NITROPACK_NGINX_FAST_CGI_CACHE_PATH) &&
15 is_writable(NITROPACK_NGINX_FAST_CGI_CACHE_PATH)
16 ) {
17 return true;
18 }
19
20 return false;
21 }
22
23 public function init($stage) {
24 if ($stage === 'very_early' && $this->isActive()) {
25 add_action('nitropack_execute_purge_url', [$this, 'purgeUrl']);
26 add_action('nitropack_execute_purge_all', [$this, 'purgeAll']);
27 }
28 }
29
30 public function purgeUrl($url) {
31 $cacheFile = $this->getCachePathFromUrl($url);
32 $diskStorage = new Disk();
33 if (!$diskStorage->exists($cacheFile)) {
34 return false;
35 }
36
37 return $diskStorage->deleteFile($cacheFile);
38 }
39
40 public function purgeAll() {
41 $diskStorage = new Disk();
42 if (!$diskStorage->exists(NITROPACK_NGINX_FAST_CGI_CACHE_PATH)) {
43 return false;
44 }
45
46 return $diskStorage->trunkDir(NITROPACK_NGINX_FAST_CGI_CACHE_PATH);
47 }
48
49 private function getCachePathFromUrl($url) {
50 if (empty($url)) {
51 return false;
52 }
53
54 $urlObj = new Url($url);
55
56 if (
57 empty($urlObj->getScheme()) ||
58 empty($urlObj->getHost()) ||
59 empty($urlObj->getPath())
60 ) {
61 return false;
62 }
63
64 $cacheKeyBase = sprintf(
65 '%sGET%s%s%s',
66 $urlObj->getScheme(),
67 $urlObj->getHost(),
68 $urlObj->getPath(),
69 $urlObj->getQuery() ? '?' . $urlObj->getQuery() : ''
70 );
71
72 $cacheKey = md5($cacheKeyBase);
73
74 return sprintf(
75 '%s%s/%s/%s',
76 nitropack_trailingslashit(NITROPACK_NGINX_FAST_CGI_CACHE_PATH),
77 substr($cacheKey, -1),
78 substr($cacheKey, -3, 2),
79 $cacheKey
80 );
81 }
82 }
83