我如何破坏缓存以便用户获得所有新的静态文件(例如 style.CSS、main.js)?

How do I bust the cache so users get all the new static files (eg. style.CSS, main.js)?

我正在将重新设计的全新网站部署到现有域中。我将在 12:00AM 手动用新文件替换所有文件,但如何确保用户不会获得旧网站的缓存版本(从而破坏一切)?

此外,如何更改站点地图以替换 google 上的旧站点地图?

有几种方法,您可以使用 webpack 等工具或 gulp 的插件,grunt 会在生成的文件名中添加 hash

所以文件名会像这样

someabc.RandomAlphanumeric.js

其中 RandomAlphanumeric 随机生成的哈希值

如果您没有使用任何构建工具,您可以像

一样对文件进行 nema
<script type="text/javascript" src="/folder/js/someFile.js?v1"></script>

注意?的使用。通常文件名会附上时间戳

有几种方法可以破坏缓存。

最简单的方法是为该类型的文件添加过期时间 header。这可以在 Apache 配置中完成,如下所示:

<FilesMatch "\.(gif|jpg|js|css)$">
    ExpiresActive On
    ExpiresDefault "access plus 10 years"
</FilesMatch>

您还可以在 URL 中为每个资源使用新的查询字符串值。

另一个选项是路由到更新文件的文件名中的更新版本号。

您需要等待 Google 的网络爬虫将更改编入索引。这不是你能控制的。

如果您要重新部署整个站点,我怀疑您是否想将 ?v1 添加到每个文件。而且由于您的文件已经缓存,所以我认为这无论如何都不会很有效。我会查看服务器级别的选项。大多数主机都可以选择禁用或刷新缓存。那是你最好的选择!