Chrome 86安全性提升,造成Google字体显示问题

Google Chrome 86后加入缓存分区功能以防止跨网站关注,但代价是造成Google字体可能无法显示,不过其他浏览器可能很快也会出现这问题。

Google字体源自Google希望开发跨系统、语系的通用字体,Google于2014年免费开源这套字体资源,受到许多网页及应用开发商的欢迎,目前全球有超过4,200万个网站使用。不过Google字体虽然CSS经过优化,但缺点之一是性能不好、速度不够快,因此一建议网站管理员下载Google字体到服务器上自行管理,以提升用户浏览网页的效果,连Google自己也这么建议。原本这做法倒也运行无碍,但是因Chrome的一项变更而失效,使效果问题再度浮上台面。

德国开发人员Simon Wicki解释,原本做法下,用户经由CDN调用Google字体后,就会被导向由缓存服务器下载字体资源。借由跨网站缓存(cross-site caching),用户只要从某台缓存服务器下载一次到浏览器缓存中,之后其他用Google字体的网站都可以套用这字体显示。

然而2020年10月发布的Chrome 86加入了浏览器缓存分割(partitioned browser cache)功能,再也不允许字体等跨网站资源在同一个CDN内分享共享。这原是基于防止跨网站关注而设计的隐私保护机制,但却阻碍Google字体套用到别网站。

也就是说,网站管理员未来最好每个网站都下载Google字体资源,才能在浏览器上显示最佳效果。

但这限制并非只出现在Chrome上。苹果Safari早从2013年就禁止跨网站关注。事实上,和Chrome同为Chromium核心的浏览器都会加入这功能,像是微软的Chromium Edge、Opera、Brave、Vivaldi等,可能很快就会无法在跨网站套用Google字体。Firefox也计划要实例跨网站关注功能。