關於js的code緩存

JavaScript的預編譯與執行

是一種描述型腳本語言,是由瀏覽器進行動態地解析與執行,不同於Java或C等編譯性語言,不需要提前進行編譯生成中間結果。事實上,引擎執行js:語法分析、預編譯期(預處理)與執行期。

  • 就是引擎檢查你的代碼有沒有什麼低級的語法錯誤;
  • 預編譯期JS會對本代碼塊中的所有聲明的變量和函數進行處理(類似與C語言的編譯)
    • 此時處理函數的只是聲明式函數(例如:function p(x){console.log(x)})
    • 全局變量聲明,變量也只是進行了聲明但未進行初始化以及賦值。
    • 匿名函數不參與預編譯,只有在解釋執行階段纔會進行變量初始化。
  • 執行代碼
  • JS引擎是按照代碼塊來進行預處理和執行的,也就是說預處理的只是執行到的代碼塊的聲明函數和變量,這也是邊編譯邊處理的道理。

代碼緩存

爲了加快某個js文件的執行速度可以將該js第一次的編譯結果保存在文件中。在之後的運行中直接使用編譯結果。該技巧可以有效提高js文件依賴多的應用的響應時間;

在使用這種技巧時,需要注意:

  • 是否是對全部js文件執行;
  • 是否生成了編譯結果;
  • 是否使用了編譯結果;
  • 源文件更新後使用新源文件、並且同時生成新的cache(codecache 日期不匹配失效);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章