PHP Advanced and Object-Oriented Programming
Larry Ullman
Last-Modified 最后修改时间
Expires 过期时间
Pragma 编译提示
Cache-Control 缓存控制
如缓存系统发现Last-Modified的值比页面缓存版本的时间更接近当前时间,它就知道应该使用来自服务器的更新页面版本。
Caching—both in Web browsers and proxy servers—can be affected using PHP’s header() function. Four header types are involved:
• Last-Modified
• Expires
• Pragma
• Cache-Control
The first three header types are part of the HTTP 1.0 standard. The Last-Modified header uses a UTC(Coordinated Universal Time) date-time value. If a caching system sees that the Last-Modified valueis more recent than the date on the cached version of the page, it knows to use the new version from the server. Expires is used as an indicator as to when a cached version of the page should no longer be used (inGreenwich Mean Time).
Setting an Expires value in the past should always force the page from theserver to be used:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Pragma is just a declaration for how the page data should be handled. To avoid caching of a page, use
header("Pragma: no-cache")
The Cache-Control header was added in HTTP 1.1 and is a more finely tuned option.
Directive Meaning
public Can be cached anywhere
private Only cached by browsers
no-cache Cannot be cached anywhere
must-revalidate Caches must check for newer versions
proxy-revalidate Proxy caches must check for newer versions
max-age A duration, in seconds, that the content is cacheable
s-maxage Overrides the max-age value for shared caches
Keep all systems from caching a page
header("Last-Modified: Mon, 26 Jul 2016 05:00:00 GMT"); //Right now!
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); //Way back then!
header("Pragma: no-cache");
header("Cache-Control: no-cache");