有没有一种元标签或其他东西,可以告诉浏览器不要使用某个日期之前的缓存。
例如:
<meta "只有在缓存时间晚于2013年4月4日时才使用缓存">
如果缓存太旧,它需要下载所有新的JavaScript、CSS、图片等。
我经常更新网站,但这会影响那些仍然有缓存的用户(你不能指望他们知道按ctrl+f5或ctrl+r)。
有没有一种元标签或其他东西,可以告诉浏览器不要使用某个日期之前的缓存。
例如:
<meta "只有在缓存时间晚于2013年4月4日时才使用缓存">
如果缓存太旧,它需要下载所有新的JavaScript、CSS、图片等。
我经常更新网站,但这会影响那些仍然有缓存的用户(你不能指望他们知道按ctrl+f5或ctrl+r)。
www.example.com/script.js
www.example.com/script.js?foo=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
}
?>
这是通过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>
最近我一直在思考这个问题。我最近开始使用Leaflet地图和GEOJSON(一个带有地理信息的JSON文件)。一些GEOJSON文件非常大,因此如果数据没有更改,我不想强制重新下载数据,但是由于我正在开发地图,我可能会修改其他JS、GEOJSON或CSS文件,因此我希望下载修改后的数据。我只想要新数据存在。所以,我想出了以下方案:
使用此方法应该仅加载已更改的数据,而不会强制重新下载未更改(和缓存的)数据。