谷歌浏览器的缓存技术有助于让用户无需每次加载页面都重复下载资源,也就是可以提高资源的使用效率进而提升网页的加载速度,当然也让用户需要返回页面时直接按后退按钮就行,而不是重新从服务器上请求资源。
目前多数网站都支持缓存后退功能,不过有些网站在 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 项目的这个变化。