缓存技术之HTTP缓存-缓存设置注意事项

110 阅读2分钟

这是我参与8月更文挑战的第18天,活动详情查看: 8月更文挑战

前言

HTTP缓存应该算是前端开发中最常接触的缓存机制之一,它又可细分为强制缓存与协商缓存,二者最大的区别在于判断缓存命中时,浏览器是否需要向服务器端进行询问以协商缓存的相关信息,进而判断是否需要就响应内容进行重新请求。

注意事项

凡是恰当的缓存策略都需要根据具体场景下的请求资源类型、数据更新要求及网络通信模式等多方面因素考量后指定出来,所以下面列举一些缓存决策时的注意事项,来作为决策思路的补充。

拆分源码,分包加载

对大型的前端应用迭代开发来说,其代码量通常很大,如果发生修改的部分集中在几个重要模块中,那么进行全量的代码更新显然会比较冗余,因此我们可以考虑在代码构建过程中,按照模块拆分将其打包成多个单独的文件。这样在每次修改后的更新提取时,仅需拉取发生修改的模块代码包,从而大大降低了需要下载的内容大小。

预估资源的缓存时效

根据不同资源的不同需求特点,规划相应的缓存更新时效,为强制缓存指定合适的max−age取值,为协商缓存提供验证更新的ETag实体标签。

控制中间代理的缓存

凡是会涉及用户隐私信息的尽量避免中间代理的缓存,如果对所有用户响应相同的资源,则可以考虑让中间代理也进行缓存。

避免网址的冗余

缓存是根据请求资源的URL进行的,不同的资源会有不同的URL,所以尽量不要将相同的资源设置为不同的URL。

规划缓存的层次结构

不仅是请求的资源类型,文件资源的层次结构也会对制定缓存策略有一定影响,我们应当综合考虑。