我们正在重新构建整个资产建设流程,以使用100%Webpack。 在此过程中,我想使用其哈希功能(例如[name]。[chunkhash] .js)来改善缓存。
但是我的后端同事说不需要,我们应该使用ETags进行缓存。因此,文件名中根本没有哈希。
我喜欢这个主意,但是我想知道如果可以使用ETags的话,捆绑器为什么提供此哈希功能。
有人有使用ETags的经验并且知道优点/缺点吗? (我们正在使用自定义的PHP后端btw)
答案 0 :(得分:0)
您提出的两个解决方案完全不同。
通过使用唯一的文件名,您可以将资源设置为永不过期。它将永远被缓存。更重要的是,您的代码不会中断,因为您的HTML仅指向其依赖的特定版本资产。
相比之下,ETag用于条件重新验证。当资源超过其缓存时间并且浏览器要检查当前版本是否仍然有效时,将使用它们。因此,缓存时间将是有限的,浏览器将被迫频繁地与服务器签入。更重要的是,如果您提供的页面依赖于资产的新版本,而旧版本的资产仍在缓存中,则您的网站可能会崩溃。
因此,使用ETags意味着您需要在性能和正确性之间进行权衡,并且在任何情况下,其结果都比给资产赋予唯一名称更糟糕。