将 HTTP 缓存与 PHP 集成
在页面内容主要保持静态但被动态模板包围的情况下,利用 HTTP 缓存标头可以优化页面交付。以下是使用 PHP 实现有效缓存的简化指南:
缓存的基本标头
要启用缓存,请考虑发送以下标头:
条件请求和处理
使用 if-modified-since 和 if-none-match:
确定缓存有效性
生成 ETag 时,考虑使用校验和或用户等因素的组合ID、语言和时间戳。对于更持久的静态内容,请设置更长的过期时间。
示例实现
<code class="php">$tsstring = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT'; $etag = $language . $timestamp; $if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false; $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] : false; if ((($if_none_match && $if_none_match == $etag) || (!$if_none_match)) && ($if_modified_since && $if_modified_since == $tsstring)) { header('HTTP/1.1 304 Not Modified'); exit(); } else { header("Last-Modified: $tsstring"); header("ETag: \"{$etag}\""); }</code>
以上是如何使用 PHP 为具有静态内容的动态网站有效实现 HTTP 缓存?的详细内容。更多信息请关注PHP中文网其他相关文章!