目前多数网站都支持缓存后退功能,不过有些网站在 HTTP 标头里设置了 Cache-Control: no-store 禁止浏览器缓存,避免用户后退时泄露敏感数据或重复请求某些数据。
现在谷歌正在对 Chrome 浏览器的前进和后台缓存 (往返缓存,即 BFCache) 行为进行重大改进,简单来说就是谷歌准备对网站进行强行缓存,无论是否设置了禁止缓存。
谷歌工程师表示,bfcache 可以将整个页面都保存在内存中,如果用户决定返回,那么浏览器可以轻松从缓存里恢复页面。
现在谷歌的计划是直接忽略 Cache-Control: no-store 标头,无论网站是否声明禁止缓存都会被缓存,从而为用户带来更好的体验。
对开发者来说这是个问题,因为特别声明了这个标头就是想要禁止浏览器缓存,没想到现在谷歌出尔反尔,强行缓存可能会导致某些敏感数据泄露或者访问某些过时的数据。
针对这类问题谷歌正在 Chrome 测试版中进行测试,希望收集开发者的反馈,用来评估 bfcache 强行缓存带来的结果。
Opera 浏览器开发者 Daniel Bratell 对此评论称,这似乎是一个触及敏感区域的问题,我不确定这在现实世界中会如何发展,即使禁止缓存标头可能会被过度使用也不应该彻底禁止无缓存技术。
另外需提醒的是 bfcache 并不是 HTTP 缓存,从某些方面来说,no-store 只是声明禁止浏览器的 HTTP 缓存,而不是禁止 bfcache 缓存,开发者不应该将 CCNS 标头解释为页面不会被 BFCached 的承诺。
Daniel Bratell 提醒开发者们密切关注 Chromium 项目的这个变化。