如果缓存日期超过特定日期,请告知浏览器更新缓存

时间:2013-04-05 21:33:07

标签: html css caching metadata browser-cache

是否有一个元标记或我可以使用的东西告诉浏览器在特定日期之前不使用缓存。

e.g。

<meta "only use cache if cache is AFTER 4/4/2013">

如果缓存是旧的,则需要下载所有新的Javascript,CSS,图像等。

我对网站进行了大量更新,然后搞砸了仍然有缓存的人(你不能指望他们知道按ctrl + f5或ctrl + r)。

4 个答案:

答案 0 :(得分:2)

我通常只是在最后添加一个get参数和我提供的脚本版本

所以如果你有

的javascript
www.example.com/script.js

使用网址

www.example.com/script.js?foo=1

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

答案 1 :(得分:1)

在某个日期之后没有用于设置缓存的元标记,但是如果您使用任何服务器语言(PHP,.NET,ruby,phyton),则可以将缓存控制设置为无缓存,然后动态设置标题在特定日期之后开始缓存。

例如使用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
}
?>

答案 2 :(得分: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>

答案 3 :(得分:0)

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

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

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