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

Html 如果缓存日期超过某个日期,则告诉浏览器更新缓存,html,css,caching,metadata,browser-cache,Html,Css,Caching,Metadata,Browser Cache,是否有一个meta标记或我可以使用的东西,告诉浏览器在某个日期之前不要使用缓存 e、 g 如果缓存是旧的,则需要下载所有新的Javascript、CSS、图像等 我对该站点进行了大量更新,然后它会把仍然有缓存的任何人搞砸(你不能指望他们知道按ctrl+f5或ctrl+r)。我通常只在最后添加一个get参数和我向他们演示的脚本版本 因此,如果您的javascript位于 www.example.com/script.js 使用url www.example.com/script.js?foo=

是否有一个meta标记或我可以使用的东西,告诉浏览器在某个日期之前不要使用缓存

e、 g

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


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

我通常只在最后添加一个get参数和我向他们演示的脚本版本

因此,如果您的javascript位于

www.example.com/script.js
使用url

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

每次递增foo的值时,这将强制浏览器重新提取脚本。

这是从.htaccess文件配置的,带有ExpiryDates

(下面是我的例子。我的主机运行一个PHP/Apache服务器-000webhost.com)


#启用过期
过期于
#我的favicon
过期按类型图像/x图标“访问加1年”
#图像
ExpiresByType image/gif“访问加1个月”
ExpiresByType图像/png“访问加1个月”
ExpiresByType图像/jpg“访问加1个月”
过期按类型图像/jpeg“访问加1个月”
ExpiresByType文本/css“访问加1周”
#Javascript
ExpiresByType应用程序/javascript“访问加1年”

没有meta标记用于仅在特定日期后设置缓存,但如果您使用的是任何服务器语言(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
}
?>

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

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

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

    不能强制浏览器重新使用缓存。你可以发挥创意,将缓存过期日期设置为过去或其他时间,但仅此而已。在商业网络上,我相信你可以通过GPO实现这一点。你可以尝试完全关闭缓存这是问题的最佳答案。它允许您在需要时有效地使缓存无效,而不依赖于以前设置的头。唯一的缺点是您的页面不可从文件系统测试,而只能从Web服务器测试,因为文件系统确实将?param=bla识别为文件名的一部分。你可以通过在文件名中加入一个版本号来解决这个问题,但这还有其他缺点:这可能意味着你必须在很多html页面中更改css标记,或者你需要使用服务器端包含系统来解决这个问题,这也需要一个服务器。这个方法如何处理特定的过期日期,按照OP的要求?
    <?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
    }
    ?>