之前拜读《深入分析Java Web技术内幕》一书的时候曾经了解过HTTP 请求相关的知识,今天正好有业务的同事来问我前端Vue项目部署之后,浏览器缓存还存在,用户正确的操作了错误的页面导致程序出现问题。
那我们不可能要求用户使用前要清除一下缓存,所以能否在程序中限制一下呢
但是我的前端水平不允许我写博客,所以只能介绍下思路
Cache-Control/Pragma
这个 Http Header字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令,如果知道该页面是否为缓存,不仅可以控制浏览器,还可以控制和HTTP相关的缓存或代理服务器。
Http Header 中 Cache-Control的可选值
可选值 | 说明 |
---|---|
Public | 所有内容都将被缓存,在响应头中设置 |
Private | 内容只缓存到私有缓存中,在响应头设置 |
no-cache | 所有内容都不会被缓存,在请求头和响应头中设置 |
no-store | 所有内容都不会被缓存到缓存或Internet临时文件中,在响应头设置 |
must-revalidation/proxy-revalidation | 如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证,在请求头中设置 |
max-age=xxx | 缓存的内容将在xxx秒后失效,这个选项只在HTTP1.1中可用,和Last-Modified一起使用时优先级较高,在响应头设置 |
Cache-Control请求字段被各个浏览器支持的很好,而且优先级比较高,Pragma字段的作用和Cache-Control类似,它也是在HTTP头中包含一个特殊的指令,使相关的服务器遵守该指令,最常用的就是Pragma:no-cache,它和Cache-Control:no-cache作用是一样的
我找了两个相同网址测试了一下
上面这个是正常的执行结果
这个是使用CTRL + F5刷新缓存后的结果,可以看到Cache-Control/Pragma的属性都被设置了,所以方案应该是可行的,
对于前端来说,可能要修改一下某个config文件,或者和Nginx有关。。(这个我确实就了解的很少了)