ETag vs webpack 的哈希



我们正在重新设计整个资产构建过程,以使用 100% webpack。 在此过程中,我想使用其哈希功能(例如[名称]。chunkhash].js(来改进缓存。

但是我的后端同事说没有必要,我们应该使用 ETags 进行缓存。所以文件名中根本没有哈希值。

我喜欢这个想法,但我想知道如果可以使用 ETag 代替,为什么捆绑器提供此哈希功能。

有没有人有ETag的经验并知道优点/缺点? (顺便说一句,我们正在使用自定义的PHP后端(

哈希文件名和使用ETags有不同的目的。

使用散列文件名时,您引用的是一个新的、唯一的资源。第一次获取时,它将从服务器加载,并且可以永久缓存。重要的是,您的代码不会中断,因为您的 HTML 仅指向它所依赖的特定版本化资产。

相比之下,ETags用于对已缓存的资源进行条件验证。当资源超过其缓存时间并且浏览器想要检查当前版本是否仍然有效时,将使用它们。因此,缓存时间将是有限的,浏览器将被迫与服务器签入以查看文件是否已更改。更重要的是,如果您投放的网页依赖于新版本的资产,而旧版本的资产仍在缓存中,您的网站可能会中断。

因此,虽然ETags非常有用,但在涉及静态文件时,它们不能替代散列文件名。

最新更新