PHP 设置图片浏览器缓存方法介绍
不管你是使用
php 打开浏览器缓存还是使用 apache,iis 服务器环境来配置我们都是会针对浏
览器的
Cache-Control 来操作,下面我来给大家介绍 PHP 设置图片浏览器缓存
Cache-Control
Cache-Control 是最重要的规则。这个字段用于指定所有缓存机制在整个请求/响应链中必须
服从的指令。这些指令指定用于阻止缓存对请求或响应造成不利干扰的行为。这些指令通常
覆盖默认缓存算法。缓存指令是单向的,即请求中存在一个指令并不意味着响应中将存在同
一个指令。
cache-control 定义是:Cache-Control = “Cache-Control” “:” cache-directive
。表
1 展示了适用
的值。
常用 cache-directive 值
Cache-directive
说明
public
所有内容都将被缓存
private
内容只缓存到私有缓存中
no-cache
所有内容都不会被缓存
no-store
所有内容都不会被缓存到缓存或 Internet 临时文件中
must-revalidation/proxy-
revalidation
如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验
证
max-age=xxx (xxx is
numeric)
缓存的内容将在 xxx 秒后失效, 这个选项只在 HTTP 1.1 可用, 并如
果和 Last-Modified 一起使用时, 优先级较高
在客户端通过浏览器发出第一次请求某一个
URL
时,根据
HTTP 协议的规定,浏览器会向
服务器传送报头
(Http Request Header),服务器端响应同时记录相关属性标记(Http Reponse
Header),服务器端的返回状态会是 200,格式类似如下:
HTTP/1.1 200 OK
Date: Tue, 03 Mar 2009 04:58:40 GMT
Content-Type: image/jpeg
Content-Length: 83185
Last-Modified: Tue, 24 Feb 2009 08:01:04 GMT
Cache-Control: max-age=2592000
Expires: Thu, 02 Apr 2009 05:14:08 GMT
Etag: “5d8c72a5edda8d6a:3239″
客户端第二次请求此
URL
时,根据
HTTP 协议的规定,浏览器会向服务器传送报头(Http
Request Header),服务器端响应并记录相关记录属性标记文件没有发生改动 ,服务器端返回
304,直接从缓存中读取:
代码如下
HTTP/1.x 304 Not Modified
Date: Tue, 03 Mar 2009 05:03:56 GMT
Content-Type: image/jpeg
Content-Length: 83185
Last-Modified: Tue, 24 Feb 2009 08:01:04 GMT
Cache-Control: max-age=2592000