瀏覽器快取
最近實作多站點登入和SSO登入,真的是坑山坑谷⋯⋯我們家前後端和PM 大家踩這個坑真的踩的不要不要的。瀏覽器快取並不是一個只有工程師要知道的知識,因為它非常深度的影響了系統設計的實現,所以有什麼知道有什麼快取機制非常重要。
首先對於快取機制有幾個關鍵的項目,分別是 cookie, sessionStorage, localStorage。
首先是前端目前最主流的 localStorage,它可以直接保留在瀏覽器上,只要使用者不操作「清除快取」這個功能,或是關閉瀏覽器背景運行,基本上會永遠保存。
再來是 sessionStorage ,如果不重新開出一個全新分頁,包含重新整理、複製分頁,都會保留儲存的資訊。
最後是讓人又愛又恨的餅乾🍪⋯⋯欸⋯⋯我說的是 cookie。它能夠隨著每一次跟後端的請求把即時的 client 資訊帶去後端,可以讓後端辨別是哪一個使用者。缺點也很明顯,就是「不安全」,很容易變成攻擊破口。通常習慣上會讓 cookie 作為純給予「後端操作」,不要把 cookie 當作是前後端溝通資料和狀態的手段,瀏覽器逐漸也朝向這個方向去規範使用。
上面聽起來像前端的知識點?
但我必須說,如果 PM 不懂這些應用,那可能很難設計出「多域名的應用程式」。因為跨域後前端程式快取就會消失無法溝通,此時一定要仰賴後端去辨別是哪個 client ,不然無法相互辨別與通訊。不然也得要有「SA」的角色協助需求設計,否則需求只能說充滿理想卻無法被實現。
當然也不是每個團隊都要這麼硬,其實系統複雜度通常是因應需求與規模來決定架構的複雜度,如何更好管理就是不同的議題。但不要設計超出自己能力可以掌控的系統,不然光是維護上的精神耗損就會讓你人仰馬翻。