027-8558 3757

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

武汉做网站公司 | 2018-12-09 16:00:00 | 浏览次数:1084次
微信的登录,扫二维码码之后,可以通过微信给的code去获取用户的微信信息,显示出对应的帐号列表(列表页),选择登录之后跳转至相应的页面。

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

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

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

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

Request

勾选与不勾选Disable cache的差别在于

Request Headers的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,还是需要不断的学习,才能深入理解并使用。

TAG标签:
添加网站建设客服微信
扫二维码与项目经理沟通

7*24小时为您服务

解答:网站建设,APP开发,SEO优化,小程序开发,H5开发,品牌推广,新闻推广,VI设计等

  非常感谢您有耐心的读完这篇文章:"网站开发中如何保证HTML页面后退不会被缓存",更多内容请继续浏览,我们将为您提供更多参考使用或学习交流的信息。我们还可为您提供:网站建设与开发网站优化品牌推广、APP开发、小程序开发软文推广等服务, 作为2013年成立的互联网公司,耕耘互联网已有8年时长,作为武汉做网站和推广服务的领先企业烽虎网络,专注高端网站建设,拥有丰富的网站建设、网页设计与制作、微信小程序开发、网站改版设计经验,并提供SEO优化推广、网站托管等网络营销服务。详细了解请咨询我们的客服。
文章分类

多一份参考,总有益处

联系烽虎网络,免费获得专属《网站建设方案》及网络推广宝典

*我们的专业顾问会在24小时内与你获得联系,请填写正确的联系方式!