6 月 6 日消息,谷歌 Chromium 博客 6 月 3 日發布博文,表示通過調整請求 cookie 的方式,早期測試顯示所有平臺的性能都有所提高。
問題所在
瀏覽器在單進程時代,由于相關數據都保存在內存中,可以較為輕松地管理 cookie。而現在包括 Chrome 在內的主流瀏覽器都使用多進程來提高性能和安全性。
Chrome 瀏覽器會為每個窗口、其他一些功能運行一個新進程,意味著處理 cookie 的方法必須調用更多的查詢,從而減慢運行速度。
谷歌表示在 Chrome 瀏覽器中,重復請求 cookie 是導致很多交互變慢的原因。IT之家翻譯谷歌博文內容如下:
我們通過對緩慢交互的現場跟蹤發現,一些網站正在觸發連續多次獲取 cookie 的低效場景。
我們采用了額外的指標來衡量 GetCookieString () IPC 在所有導航中出現冗余(返回的值與上次相同)的頻率。
我們驚訝地發現,87% 的 cookie 訪問是多余的,在某些情況下,這種情況每秒可能發生數百次。
在某些情況下,特別是當多個網站同時發出快速請求時,這些請求每秒會發生數百次,造成嚴重的延遲。最終,從網絡服務同步(一次一個)獲取 cookie 的舊方法造成了瓶頸。
解決方案
谷歌表示 Chrome 瀏覽器不再重復檢查網絡服務,而是保存 cookie 數據及其版本號的本地副本,這樣,Chrome 瀏覽器就可以檢查 cookie 是否擁有最新數據,而無需重復請求。
根據谷歌工程師的說法,這一改變讓 cookie 相關信息的數量減少了 80%,cookie 訪問速度加快了 60%。
谷歌官方在博文中表示:
我們的想法是,document.cookie 的每個值現在配對單調遞增的版本。每個 renderer 都會將上次讀取的 document.cookie 與該版本緩存在一起。
網絡服務將每個 document.cookie 的版本保存在共享內存中。因此,渲染器無需向網絡服務發送進程間查詢,就能知道自己是否擁有最新版本。