## **手動管理緩存**
為了代碼架構清晰,便于維護,我們都會用模塊化的方式去編碼,每個模塊一個文件,這樣帶來的問題是一個頁面需要很多文件,要很多請求,這對頁面性能是不利的。合并是解決這個問題的好方法,但又因為HTTP緩存機制是基于URL的,只要某個模塊一改動,整個合并資源都要重新下載。
在對性能要求較高,比如在移動設備環境上,我們可以利用HTML5中的localStorage特性,來實現手動控制緩存。大概的思路是,在定義模塊時,同時將模塊的代碼和版本號分別儲存到localStorage,在下一次打算請求模塊之前,我們先判斷模塊的最新版本是不是在localStorage中,將不存在的模塊組合在一起,請求動態合并的資源。
不過,這種方案可能會引發安全問題。假如同域下的其他頁面被XSS攻擊,壞人就可以篡改localStorage的內容,可能導致原來的頁面代碼被植入惡意程序。解決的方法是,在執行模塊之前,算一下代碼摘要,對比下服務器給的該模塊的摘要,再決定是否使用。也可以使用SRI策略,由瀏覽器幫你做校驗。