我们应该将HTTP Expires或Cache-control:max-age标头设置多长时间?

问题描述 投票:0回答:1

假设bundle.js为750kb,是真的吗,如果将其设置为“永不过期”或“十年内过期”,则浏览器不需要获取该文件,因此可以使您的网站和页面加载更快?

(顺便说一下,Cache-control: max-age是HTTP / 1.1和if it and Expires: are both present, Cache-control overrides the Expires header。]

如果您有每周或2个月的发布周期,应该将Expires标头设置为1周或2个月吗?我以为每周发布一次,您的某些JavaScript或CSS文件可能会保持不变,因此将其设置为在6个月甚至10年后过期可能会很好? (因为一周后它没有变化?)

但是如果您的文件已更改但浏览器无法获取该文件怎么办?是真的,如果您使用ETag机制,或者使用Expires:Cache-control,那么您可以通过不同的ETag或文件名来“强制”它过期?设置Expires标头长度的好方法是什么?

caching http-headers browser-cache web-performance expires-header
1个回答
0
投票

您可以同时使用所有这些技术。如果您可以在文件名和对它们的引用中包含一个哈希(Expires),则可以确保只要更改某些内容,就可以破坏缓存。

然后您可以将bundle.53ae823.js设置为31536000(最大年份),因为您可以信任URI不变的文件(由于哈希,如果文件更改了,URI也将不变)。

当然,您可以实现ETAG以便重新验证缓存。仍然需要将请求发送到您的服务器/ CDN,但是如果文件没有更改,则可以节省用户下载整个文件的时间。

关于此主题的一篇不错的文章,bundle.2020-03-12-08.js

© www.soinside.com 2019 - 2024. All rights reserved.