网站建设

您的当前位置:网站首页 > 网站建设 > 网站开发中如何保证HTML页面后退不会被缓存

网站开发中如何保证HTML页面后退不会被缓存

日期:2018-11-20 11:22:23     人气:802

微信的登录   ,扫二维码码之后   ,可以通过微信给的code去获取用户的微信信息   ,显示出对应的帐号列表(列表页)   ,选择登录之后跳转至相应的页面   。


  网站开发中如何保证HTML页面后退不会被缓存


  测试的时候发现   ,如果在跳转后的页面   ,点击浏览器返回   ,还是会显示登录帐号列表   。这时候登录是会失败的   ,因为已经登录过   ,没有了半登录态   ,应该需要重新扫码登录才行   。


  所以列表页是完全不能被缓存的   ,而浏览器的前进后退   ,默认会从缓存里读取   ,完全不发请求   。


网站开发中如何保证HTML页面后退不会被缓存

  打开Chrome的开发者工具调试的时候发现   ,如果勾选Network的Disablecache   ,浏览器后退的时候   ,结果页不会被缓存   。如果不勾选则缓存页面   。用户是不会主动开启这个选项的   ,所以需要通过Headers控制页面的缓存   。


  Request


  勾选与不勾选Disablecache的差别在于


  RequestHeaders的Cache是否会被设置为Cache-Control:no-cache、Pragma:no-cache


  Response


  有设置Cache为Cache-Control:no-cache,must-revalidate   。但是为什么页面还是会缓存了呢   ?


  而Request为浏览器发送   ,不能进行设置   ,只能从Response着手   。


  解决方案为设置Cache为Cache-Control:no-store,no-cache,must-revalidate


  no-cache与no-store


     “no-cache   ”表示必须先与服务器确认返回的响应是否发生了变化   ,然后才能使用该响应来满足后续对同一网址的请求   。因此   ,如果存在合适的验证令牌(ETag)   ,no-cache会发起往返通信来验证缓存的响应   ,但如果资源未发生变化   ,则可避免下载   。


  相比之下   ,   “no-store   ”则要简单得多   。它直接禁止浏览器以及所有中间缓存存储任何版本的返回响应   ,例如   ,包含个人隐私数据或银行业务数据的响应   。每次用户请求该资产时   ,都会向服务器发送请求   ,并下载完整的响应   。


  再次观察页面的请求   ,发现虽然设置了no-cache   ,但是没有设置ETag可以进行校验   ,最终还是从缓存里读取   。


  关于HTTP   ,还是需要不断的学习   ,才能深入理解并使用   。


声明

本站文章,由 麦策电商 整理发表(部分信息来自互联网,不代表本站观点),本站遵循行业规范,任何转载的稿件都会明确标注作者和来源。转载请注明 麦策电商 https://www.maice.com

找不到好的网页设计师?

网站没有客户?网站成单率太低?快点点击右侧咨询麦策电商

文章评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。