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);
//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);