From: Ben Sherratt Date: Sat, 4 Jul 2026 17:07:00 +0000 (+0100) Subject: Added cache support X-Git-Url: https://git.bts.cx/cx.git/commitdiff_plain/18f025568827947352b9592508e85351fe0f1dbe?ds=inline Added cache support --- diff --git a/cx/lib/template.php b/cx/lib/template.php index 6826d16..004c2ab 100644 --- a/cx/lib/template.php +++ b/cx/lib/template.php @@ -12,7 +12,7 @@ function cx_template_has_content($class, $path) { return file_exists(cx_template_content_path($class, $path)); } -function cx_template_output_content($class, $path) { +function cx_template_output_content($class, $path, $cache_age = 30 * 86400) { $full_path = cx_template_content_path($class, $path); $extension = pathinfo($path, PATHINFO_EXTENSION); @@ -25,8 +25,22 @@ function cx_template_output_content($class, $path) { //finfo_close($finfo); - Deprecated } + $file_size = filesize($full_path); + $file_modified_time = filemtime($full_path); + header('Content-Type: ' . $mime_type); - header('Content-Length: ' . filesize($full_path)); + header('Content-Length: ' . $file_size); + header('Cache-Control: public, max-age=604800'); + header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $cache_age) . ' GMT'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $file_modified_time) . ' GMT'); + + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { + $request_modification = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']); + if ($request_modification >= $file_modified_time) { + http_response_code(304); + return; + } + } $fp = fopen($full_path, 'rb'); fpassthru($fp); diff --git a/public/.htaccess b/public/.htaccess index 3089e13..fdf1802 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -1,11 +1,11 @@ -# BEGIN CX +# BEGIN CX -RewriteEngine On -RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] -RewriteBase / -RewriteRule ^index\.php$ - [L] -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule . /index.php [L] +RewriteEngine On +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] +RewriteBase / +RewriteRule ^index\.php$ - [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule . /index.php [L] # END CX \ No newline at end of file