gpt4 book ai didi

css - 管理所有 Assets 缓存的最佳实践(图像、CSS、JS 等)

转载 作者:技术小花猫 更新时间:2023-10-29 10:26:30 26 4
gpt4 key购买 nike

我正在开发一个中等大小的 Web 应用程序,并试图提出最佳解决方案,让所有浏览器都使用缓存,并且仅在加载 Assets 有更新时才使其失效。

根据我在这里和其他地方所做的研究,每个人似乎都同意将 ?v={version#} 附加到 Assets (例如 css 或 js 文件)是自动使缓存失效的好方法更新 Assets 时。 (根据 Force browser to clear cacheBetter way to prevent browser caching of JavaScript files )

但在我看来,此解决方案应该推广到驻留在 Web 服务器上的所有 Assets 。

所以我的问题是,让构建脚本查看整个网站的每个 src=""属性(无论是 img、css 还是 js)并以编程方式附加 ?={timestamp} 是否是一个好习惯? timestamp 是文件最后一次被修改的时间。这样,每当您从开发推送到暂存到生产时,只有那些已修改的文件才会有更改的时间戳,并且浏览器会知道使这些文件的缓存无效。

这种方法有什么缺陷吗?

注意:再仔细考虑一下,时间戳在稍后恢复的更改的情况下肯定是不可取的。因此,附加 ?={md5(filecontents)} 是一种更可靠的方法。尽管如此,关于是否在所有 Assets 和所有构建中实现这一点的问题仍然存在。

最佳答案

How to force browser to reload cached CSS/JS files? 找到了我认为可以接受的解决方案不知道我在最初的调查中是如何错过这一点的。

对于遇到此问题的任何人,请注意我指的是引用 Google 的 mod_pagespeed 的链接页面上的第一个答案。 apache 的插件。这适用于 Web 服务器级别,因此“[它适用于] PHP、rails、python、静态 HTML——任何东西。”

这正是我一直在寻找的解决方案。所有 Web 开发人员都应使用此工具或类似工具,以保持缓存逻辑与代码本身正交。

关于css - 管理所有 Assets 缓存的最佳实践(图像、CSS、JS 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778084/

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