PHP标头过期动态内容

时间:2013-11-21 05:51:59

标签: php header

通过使用以下命令,我的资源文件将缓存到2014年4月15日

header('Expires: Thu, 15 Apr 2014 20:00:00 GMT');

如果在到期日之前有任何资源文件被更改,如何处理这种情况?

2 个答案:

答案 0 :(得分:3)

您无法告诉客户端其缓存副本不再有效,因为在该日期之前它甚至不需要再次从您的服务器请求此URL。

如果您确实需要,可以做的事情是更改资源的网址 - 例如重命名文件,更改数据库ID,等等。当然,您还必须更新资源的任何链接。当客户端遇到其中一个修改过的链接时,它会看到没有缓存的URL,因此它必须从服务器请求它。 (如果有人可能仍然试图访问旧URL,您应该安排它返回指向新URL的301 Moved Permanently响应。)

除非您确定资源在该日期之前不会再次更改(或至少客户端不需要查看任何未来的更改),否则您应该停止发送远期Expires标头。如果您试图避免让客户端重复下载大型资源,您可以改为发送ETag和/或Last-Modified标头。这些允许客户端在将来的请求中使用If-None-Match和/或If-Modified-Since,因此如果资源未更改,您可以发送304 Not Modified。这样,您每次都可以让客户端检查与服务器,但实际上只有下载资源才会发生变化。

答案 1 :(得分:0)

例如,你有一个名为“style.css”的css文件

<link rel="stylesheet" type="text/css" media="all" href="style.css" />

现在你改变了这个css内容,你想在用户的浏览器中刷新这个文件

只有你应该在这个css网址上添加一个字符串,如

<link rel="stylesheet" type="text/css" media="all" href="style.css?1" />

我在此文件s url. then user的浏览器中添加了“?1”这个网址是新的,它会再次获取此文件

相关问题