我們如何打造快取技術

來自

『快取』(Cache)這兩個字相信對於想要架設網站的人,或多或少都有聽過。然而,對於『快取』的理解,可能多數人都會覺得『很難』、『很深奧』,並且很難掌握他到底在什麼層面上可以幫助網頁速度的提升。

其實快取就是圖書館中的『常用書區』

我們先來講快取的定義是什麼。快取是一個暫存區域,用於儲存『最近使用』或『經常使用』的數據,以便在需要時能快速訪問,無需再次從遠端或慢速的存儲設備中讀取。

我非常喜歡下圖的解釋,來自『Caching – Simply Explained』。他是用圖書館作為例子。想像一下,當你想要做一個研究(比方研究乾隆皇帝歷史),必須經常翻閱古籍。在圖書館中,你勢必經常會在『清史相關藏書』那個櫃位繞來繞去。

但是很神奇的是,你發現最終,你大部分翻閱的書就兩本:『清史稿』(趙爾巽等著),跟『清高宗實錄』(嘉慶朝編修),剩下什麼『盛京內務府檔』、『乾隆朝大小金川之役研究』、甚至『養心殿造辦處史料輯覽』,你可能久久才會去書架上拿下來翻一次。

那這個時候,『清史稿』跟『清高宗實錄』,就是你『清史相關藏書』的『快取』!你發現,你只需要借這兩本書回家,因為,這兩本書已經涵蓋90%你所需要的資訊!

註:”Cache” 來自法語的『避難儲藏室』的意思。因為當你準備要避難的時候,你會發現小小的『儲藏室』的存貨,已經涵蓋你90%日常所需。因此電腦科學借用這個概念,把這個技術稱之為『Caching技術』。

快取就是『最常用的書』,因此各個部分都能應用快取技術

快取是一個暫存區域,用於儲存最近使用或經常使用的數據,以便在需要時能快速訪問,無需再次從遠端或慢速的存儲設備中讀取。所以其實方方面面都可以應用這個技術!

訪客自己手機的內建快取:瀏覽器快取

當訪客第一次來到你的XX網站時,他的手機會從你的主機中獲取你網頁的內容,並且同時,將這些內容存儲在他手機的暫存區中,成為他手機的『XX網站的快取』。

  1. 所以第一次訪問,速度都會比較慢。因為根本還沒去過圖書館,哪知道什麼書比較常用?
  2. 因此第一次訪問,主機性能越強,訪問速度越快

第二次之後,他再次看你的網站時,他的手機會先檢查暫存區中,是否已經有『XX網站的快取』。

  1. 如果發現存在!他的手機則直接把『XX網站的快取』給他看,就不需要重新請你的主機傳送網站資訊到他的手機。這個過程,稱為命中快取(Cache Hit)。
  2. 如果快取中不存在,那就如同第一次訪問一樣啰!重新請你的主機傳送資訊到你的手機,然後製作快取。

我們如何製作主機快取

這就像是我們直接在圖書館安排一位導覽員,你直接問導覽員『我想要研究乾隆朝歷史,該從何下手?』,導覽員二話不說,直接告訴你:先看『清史稿』跟『清高宗實錄』就對了!省的讓你翻了一大堆書,才終於恍然大悟其實重要的書,就這兩本而已。

剛剛提到的瀏覽器快取,就像是他翻遍了整個清史藏書,才終於發現重要的書只有『清史稿』跟『清高宗實錄』。而『主機快取』就像是『導覽員』,直接告訴訪客的手機『網站中最重要的資訊是什麼』。

金蘋果會將訪客的某些請求結果快取起來,供後續新的訪客第一次來到你的網站時,當他們有相同的請求時,直接把『最重要的結果』傳送給他,節省『第一次訪問的時間』。

我們如何製作應用程式快取

應用程式本身可以快取計算結果或頻繁使用的數據,以減少計算和數據查詢的時間。
我們會利用Redis快取系統,來加速 Web 應用程式的數據訪問。

我們如何製作硬體快取

主機處理器(CPU)中的快取記憶體(L1、L2、L3 Cache)可以暫存最近使用的數據和指令,以加速處理器的運算。CPU 的快取能顯著提高計算速度,因為它比訪問 RAM 更快。

結論:我們利用快取技術能大幅加速你的網頁,並且節省你的主機性能

快取的優點提升性能減少對原始數據源的頻繁訪問,提升系統的響應速度。對於你網站的訪客來說,可以顯著加快網頁和應用的加載速度。並且,減少伺服器負載快取可以減少伺服器處理請求的次數,降低伺服器的壓力。最後,快取可以節省帶寬,尤其是瀏覽器快取,可以避免重複下載相同的資源,節省網路流量。

延伸閱讀

我們如何建置高速網站主機

架設網站其實就跟開設一般的實體店面一下。想像一下如果40年前你想在台北開一個雜貨店,你會怎麼做? 選一個塊地,租下他 向台北市商務局,申請門牌號碼...