总结以下http缓存的几个方案
md5/hash缓存
不缓存主入口html,为静态文件添加MD5或者hash标识,解决浏览器无法跳过缓存过期时间主动感知文件变化的问题。
原理是:
每次更新的资源,资源名也更新为资源本名+hash/md5码
,而入口文件不设置缓存,每次请求都是最新,同时在入口文件更新资源名。因为资源名不同,浏览器会去请求新的,这样就保证了是最新资源。同时,每一个资源(除了入口文件,入口文件需要引用其他套接了hash/md5值得资源)都可以设置很长的过期时间,不会影响资源的更新。
通过这种方法,我们就可以从根本上解决过期时间没到浏览器无法主动请求服务器的问题。
webpack提供了webpack-md5-hash插件,可以帮助开发者在项目发布时自动修改文件标识。
设置过期时间+过期时询问是否更新
网上挺多文章了,不再转述
增加CDN(content delivery network 内容分发网络)缓存
依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术(较为官方的说明)。
----http缓存详解,http缓存推荐方案
加上cdn也可以有效减少请求时间和服务器压力