解决浏览器打开已关闭页面读取缓存页面,导致执行 Ajax 而不是跳转登录页面
问题描述:
一个后台项目,用户访问了页面 domain.com/a/c
,项目中所有页面的 Header
里缓存选项都是 Cache-control: private
(这个就意味着浏览器会缓存页面);然后关闭浏览器,用了浏览器 Ctrl+Shift+T
重新打开已经关闭的页面,这时候网页的内容直接获取的是缓存内容并不直接访问服务器,但是会执行页面中的 JS
代码,项目中有 JS
访问同域的资源,因为没登陆账号,这部分会 302
到登录界面导致报错。
问题解决:
还是从浏览器的页面缓存入手,把项目中响应头缓存控制改为不允许缓存,Cache-control: no-store, no-cache, must-revalidate
。
疑问:
虽然上面的方法解决了不自动跳转登录页的问题,但是页面得不到缓存,感觉也挺耗费资源的。比较好奇像单页应用是怎么做的?
推荐文章: