如果缓存日期超过某个日期,请告诉浏览器更新缓存

5

有没有一种元标签或其他东西,可以告诉浏览器不要使用某个日期之前的缓存。

例如:

<meta "只有在缓存时间晚于2013年4月4日时才使用缓存">

如果缓存太旧,它需要下载所有新的JavaScript、CSS、图片等。

我经常更新网站,但这会影响那些仍然有缓存的用户(你不能指望他们知道按ctrl+f5或ctrl+r)。


你不能强制浏览器重用缓存。你可以创造性地将缓存过期日期设置在过去或其他时间,但这就是全部了。 - PlantTheIdea
在商业网络中,我相信您可以通过GPO完成此操作。 - RandomUs1r
你可以尝试完全关闭缓存:https://dev59.com/6nM_5IYBdhLWcg3whznx - btevfik
4个回答

3
我通常只会在末尾添加一个 get 参数,以显示我正在呈现的脚本版本。
因此,如果你的 JavaScript 位于:
www.example.com/script.js

使用URL。
www.example.com/script.js?foo=1

当我每次增加 foo 的值时,这会强制浏览器重新获取脚本。

这是对帖子问题的最佳答案。它允许您在需要时有效地使缓存失效,而不受先前设置的标头的影响。唯一的缺点是您的页面无法从文件系统进行测试,只能通过Web服务器进行测试,因为文件系统无法识别?param=bla作为文件名的一部分。您可以通过在文件名中加入版本号来解决此问题,但这也有其他缺点:这可能意味着您需要更改许多HTML页面中的CSS标签,或者您需要使用服务器端包含系统来解决此问题,这也需要一个服务器。 - Simon Groenewolt

1

没有一种元标签可以在某个日期之后设置缓存,但如果您使用任何服务器语言(PHP、.NET、Ruby、Phyton),您可以将缓存控制设置为 no-cache,然后动态设置标题,在某个日期后开始缓存。

例如,使用 PHP:

<?php
$cdate = date('Ymd');
if ($date > '20130404') {
  header('Cache-Control: max-age=28800'); //cache lifetime to 8 hours
} else {
  header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
}
?>

0

这是通过ExpiryDates从.htaccess文件进行配置的

(以下是我的示例。我的主机运行PHP / Apache服务器-000webhost.com)

<IfModule mod_expires.c>

# Enable expirations
ExpiresActive On

# My favicon
ExpiresByType image/x-icon "access plus 1 year"

# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access plus 1 week"

# Javascript
ExpiresByType application/javascript "access plus 1 year"

</IfModule>

这个方法如何处理由OP请求的特定过期日期? - showdev

0

最近我一直在思考这个问题。我最近开始使用Leaflet地图和GEOJSON(一个带有地理信息的JSON文件)。一些GEOJSON文件非常大,因此如果数据没有更改,我不想强制重新下载数据,但是由于我正在开发地图,我可能会修改其他JS、GEOJSON或CSS文件,因此我希望下载修改后的数据。我只想要新数据存在。所以,我想出了以下方案:

  1. 重命名所有更改过的JS、GEOJSON和CSS文件。
  2. 根据需要编辑调用文件(SCRIPT标签),并将调用HTML文件保存为新名称。
  3. 将原始页面编辑为指向新页面的元重定向。

使用此方法应该仅加载已更改的数据,而不会强制重新下载未更改(和缓存的)数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接