gpt4 book ai didi

javascript - 如何让用户拥有最新的非缓存代码?

转载 作者:行者123 更新时间:2023-11-30 13:05:59 26 4
gpt4 key购买 nike

这是一种核心 Web 开发主题,而且很难搜索。

我经营着一个中型网站,每天约有 2500 个用户。我们每个月都在大量开发新功能。我们有一个 master、dev/master 和其他一些开发分支的 GIT 设置。我们有一个暂存服务器和一个开发服务器,而且我们都在本地工作,直到我们推送到开发。

但是,当我将更改推送到开发甚至上线时,通常情况下用户必须刷新缓存,否则他们会看到错误。

我们确实使用 HTML5 应用程序缓存,当我们更改 list 时,它会让所有文件重置。但是我们并没有为整个应用程序使用 App Cache,只是一些使应用程序更快的资源。

撇开应用缓存不谈,这在我们的旧站点中仍然是一个问题,即使没有应用缓存。我知道你可以在 JS 和 CSS 文件之后做 ?timestamp。但我希望用户缓存这些。它加快了他们的体验。

那么,如何才能让用户缓存内容以提高速度,同时在我推送更新时获得最新的内容呢?大佬们是怎么处理的?

谢谢!

最佳答案

我想在这里给出一个明确的答案,因为这个问题的解决方案非常棒。这基本上就是凯所说要做的。

在 PHP 中我们这样做 define("GIT_HASH",exec(GIT."rev-parse --short HEAD 2>&1"));其中 GIT 是你的 git bin 的路径。在 linux 上它只是 git,在 mac 上它就像/usr/local/bin/git

然后我们将我们的 GIT 散列放在 JS 中以与 require.js 一起使用

<script>
window.app_hash = '<?=GIT_HASH;?>' || '';
</script>

现在我们有了哈希,所以我们只是更改了 require.js 的配置

require.config({
baseUrl: '__' + app_hash,

我们也有这个用于硬编码的 PHP url/css/main.css">

最后我们使用了 NGINX 重写规则来允许这个

rewrite ^/__[^/]*/(.+) /$1 last;

对于 htaccess 中的 apache

RewriteRule ^__[^/]*/(.+) /$1

__ 是我们用于散列的前缀,只是为了清楚起见。 NGINX 中的最后一个是我们的其余规则会被命中,而对于 htaccess 你不需要那个。

我们没有使用像 ?whatever 这样的查询字符串的原因是因为某些浏览器永远不会缓存带有这样的查询字符串的 URL。我们不想要那样,我们想要缓存,而不是在我们部署时。

如果您不使用 require.js - 您将不得不将所有 URL 更改为语法,但这是值得的。

如果您使用 html5 应用程序缓存,请务必取出其中的所有 css 和 js。

谢谢凯!

关于javascript - 如何让用户拥有最新的非缓存代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com