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 / NginxFastCgi.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
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