在http中,可通过控制http响应头,来控制http客户端的资源缓存,可分为强缓存和协商缓存
强缓存:
cache-control : max-age = 31536000
强缓存通过响应头cache-control中max-age等指令进行控制
max-age可设置强缓存时间周期,
在该周期内,将直接从客户端缓存获取资源,而不会向服务器发送请求
协商缓存:
etag : W/" a6a8bc91475ad "
协商缓存通过响应头etag与last-modified进行控制,
它每次发送请求时,需要进行缓存新鲜度校验,如果资源过旧,将直接从响应中获取,否则从客户端缓存获取
新鲜度校验,通过请求if-none-match与响应头etag进行对比,或者请求头if-modified-since与响应头last-modifed进行对比
一般来说,我们对构建工具打包后,带有hash值的资源进行一年的强缓存,而对不带hash的资源进行协商缓存控制,注意协商缓存需要配置Cache-Control为max-age=0或者no-cache,否则一个没有设置Cache-Control的静态资源将会根据Date与Last-Modified计算出强缓存时间,可以根据谷歌中开发者工具中的网络面板查看其js/css等资源的响应头来确定是否配置了正确的资源缓存策略