php header缓存的示例

PHP Header 缓存的示例

什么是 Header 缓存?

HTTP Header 缓存是指服务器在响应(如 HTML,CSS,JavaScript,图像等)中添加特定响应头,以利用浏览器对请求的缓存机制。通过使用缓存,每次请求时,浏览器可以轻松地检查响应是否更改。如果响应没有更新,则浏览器可以使用缓存而无需再次请求新的响应,从而显着减少了页面加载时间。

为什么我们应该使用 Header 缓存?

下面是一些判断是否需要使用 HTTP 缓存的方法:

我们有很多的静态资源,如图像,CSS和JavaScript,这些文件往往相对不去变化,其内容不随时间变更而变更。

我们的页面的缓存过期时间足够长。一般情况下,缓存过期时间应该设置在24小时以上。

我们的页面有一个合理的缓存键(缓存标识符)。在这里,我们可以使用 E-Tag、Last-Modified 或使用来自应用程序的定制缓存键。

Header 缓存示例

下面的例子演示如何使用 PHP 添加 HTTP 缓存到我们的响应中。我们将加入 Last-Modified 响应头以利用浏览器的缓存机制。

$last_modified_time = filemtime('file.txt');

$etag = md5_file('file.txt');

header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");

header("Etag: $etag");

if(@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $last_modified_time ||

trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {

header("HTTP/1.1 304 Not Modified");

exit;

}

// 继续处理请求,发送最新的版本

在这个例子中:

// 获取文件最后的修改时间

$last_modified_time = filemtime('file.txt');

// 获取文件内容的 MD5 摘要,作为缓存键

$etag = md5_file('file.txt');

// 发送 Last-Modified 和 Etag 响应头

header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");

header("Etag: $etag");

// 检查请求的 If-Modified-Since 头字段和 If-None-Match 头字段

if(@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $last_modified_time ||

trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {

// 如果未发生变化,则返回 304 Not Modified

header("HTTP/1.1 304 Not Modified");

exit;

}

// 如果发生变化,则继续处理请求,发送最新的版本

这个例子演示了如何使用缓存控制头来优化网站的性能。通过实现 HTTP 缓存,我们可以显著的提高页面加载时间,并减轻服务器传递元数据的负担。下次,当您考虑如何优化您的网站性能时,请考虑使用 HTTP 缓存。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签