5

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

例如

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

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

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

4

4 回答 4

3

我通常只是在最后添加一个 get 参数以及我向他们展示的脚本版本

所以如果你有你的javascript

www.example.com/script.js

使用网址

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

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

于 2013-04-05T21:39:43.043 回答
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
}
?>
于 2013-04-06T03:10:34.960 回答
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>
于 2013-04-05T21:41:12.333 回答
0

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

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

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

于 2021-04-14T02:52:10.807 回答