<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 原理 1. 獲取 keep-alive 包裹著的第一個子組件對象及其組件名 2. 根據設定的 include/exclude(如果有)進行條件匹配,決定是否緩存。不匹配,直接返回組件實例 3. 根據組件 ID 和 tag 生成緩存 Key,并在緩存對象中查找是否已緩存過該組件實例。如果存在,直接取出緩存值并更新該 key 在 this.keys 中的位置(**更新 key 的位置是實現 LRU 置換策略的關鍵**) 4. 在 this.cache 對象中存儲該組件實例并保存 key 值,之后檢查緩存的實例數量是否超過 max 的設置值,超過則根據 LRU 置換策略**刪除最近最久未使用的實例**(即是下標為 0 的那個 key) 5. 最后組件實例的 keepAlive 屬性設置為 true,這個在渲染和執行被包裹組件的鉤子函數會用到,這里不細說 <br> <br> # LRU 緩存淘汰算法 LRU(Least recently used)算法根據數據的歷史訪問記錄來進行淘汰數據,其核心思想是“如果數據最近被訪問過,那么將來被訪問的幾率也更高”。 ![](https://pic4.zhimg.com/80/v2-3362645ff195bba726f603da27c5f42b_720w.jpg) **keep-alive 的實現正是用到了 LRU 策略,將最近訪問的組件 push 到 this.keys 最后面,this.keys\[0\]也就是最久沒被訪問的組件,當緩存實例超過 max 設置值,刪除 this.keys\[0\]** <br> <br> # 參考資料 * [12道vue高頻原理面試題,你能答出幾道?](https://zhuanlan.zhihu.com/p/101330697)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看