3450399331
网站建设

网站建设中怎么样保证HTML页面后退不会被缓存

发表日期:2024-12-16   作者来源:www.pnswa.com   浏览:0   标签:网站制作    

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

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

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

打开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,还要持续的学习,才能深入理解并用。

标题名字网站建设中怎么样保证HTML页面后退不会被缓存

如没特殊注明,文章均为博益网 原创,转载请注明来自http://www.ziyubo.com/news/jianzhan/17173.html
上一篇:

下一篇: