快取(英語:cache),凡是位於速度相差較大的兩種硬體之間,用於協調兩者資料傳輸速度差異的結構,均可稱之為快取。不僅在CPU和主記憶體之間有快取,而且在記憶體和硬碟之間也有快取(磁碟快取),乃至在硬碟與網路之間也有某種意義上的快取──稱為Internet臨時資料夾或網路內容快取等。快取在整個網站應用中無所不在,可以存在於瀏覽器、DNS、伺服器、資料庫、靜態資源、CPU、記憶體。
從網站使用的方向來思考的話,快取是網頁加載的方式。首先是使用者的電腦及瀏覽器,在送出請求前,會先確認是否有本地快取(也就是我們清除快取在清除的東西),如果沒有或是快取過期,瀏覽器才會真正送出請求。
為什麼需要快取?
快取的主要目的是速度,快取可能是唯一直接影響頁面速度得分的東西,亦可減少伺服器負擔。
快取 = 更快加載頁面 = 更好的頁面速度得分。
然而,有一個權衡。為了節省時間並加快速度,快取需要存儲。因此,更快地載入頁面的更少計算時間表示更多的伺服器空間來存儲快取的頁面數據。
快取的種類
網站快取、頁面快取
網站快取,也稱為 HTTP 或頁面快取,是一種在首次加載網頁時臨時存儲網頁、圖像和類似媒體內容等數據的系統。它記住內容,並能夠在每次再次訪問網頁時快速加載內容。
這是一種客戶端緩存,這意味著緩存完全由最終用戶負責和控制。網站只有有限的管理客戶端緩存的方式,它可以告訴快取將保存的數據存儲多長時間。
這樣,內容不經常更改的頁面可以設置為較久的未來過期。但是,經常更改圖片的頁面可能會被要求更早或在頁面更新時過期。這確保最終用戶可以定期看到新鮮內容,可以從快取中加載未更改的頁面,以加快加載頁面所需的時間。
瀏覽器快取
瀏覽器快取是一種內置於最終用戶網站瀏覽器中的站點緩存。網站元素由瀏覽器存儲在訪問者的電腦上,並與與您的內容相關的其他文件分組。瀏覽器快取可以包含 HTML 頁面、CSS 樣式表、JavaScript 腳本、圖像和其他多媒體內容。
瀏覽器緩存與網站快取重疊,因為它們都是客戶端系統。主要區別在於瀏覽器而不是最終用戶控制緩存,所有瀏覽器都有一個快取,無需用戶干預即可清除舊文件。
如前所述,網站可以與用戶的瀏覽器進行通信。因此,當頁面更新並且緩存中存儲的內容已過時時,瀏覽器知道它應該清除舊內容並將更新保存在其位置。
最終用戶還可以隨時手動清除瀏覽器的緩存。
伺服器快取
伺服器快取是一種與網站緩存相關的類型緩存,除了不是將內容臨時保存在客戶端,而是存儲在網站的伺服器上。伺服器緩存也完全在伺服器上處理和管理,無需最終用戶或瀏覽器的任何參與。
伺服器快取的類型包括但不限於:
- 對象緩存:將數據庫查詢存儲在伺服器端緩存中,以便在後續頁面加載時快速檢索。
- CDN 緩存:內容分發網路 (CDN) 是一組分佈在世界各地的伺服器。它們快取使用最接近最終用戶的伺服器加載的內容,以實現更快的加載時間。
- 操作碼緩存:PHP 代碼在每個請求之間編譯,然後存儲在快取中,以便在重複頁面加載時更快地執行。
CDN是什麼?
內容分發網路(英語:Content Delivery Network或Content Distribution Network,縮寫:CDN)是指一種透過網際網路互相連接的電腦網路系統,利用最靠近每位使用者的伺服器,更快、更可靠地將音樂、圖片、影片、應用程式及其他檔案傳送給使用者,來提供高效能、可擴展性及低成本的網路內容傳遞給使用者。
內容傳遞網路的總承載量可以比單一骨幹最大的頻寬還要大。這使得內容傳遞網路可以承載的使用者數量比起傳統單一伺服器多。
同時,將伺服器放到不同地點,可以減少互連的流量,進而降低頻寬成本。
我們拿的資源如果被放在 CDN,那麼我們就會連到最近的 CDN 節點取得資源;這些 CDN 節點對於伺服器來說,也算是一種內容快取;另外,在請求傳遞到伺服器的過程中,可能會經過路由、代理伺服器、負載平衡器等設備,這些也都是可以暫存資料的地方;最後請求真的到伺服器時,伺服器如果需要向其他外部服務取得資源如 DB、API 等等,也可以透過快取的方式來儲存常用資料。
使用快取要注意甚麼?
- 快取生命週期
快取生命週期設定也很重要,設定太短的話會造成資源耗損太多,設定太長的話會需要手動更新。 - 預先載入 (preload)
在登入網站前,可以先去爬連結,將快取生成,使用Sitemap爬蟲。 - 動態資源要排除(例如,會員資料、購物車)
- 有更新靜態資源要記得清除(css/js/圖片)
若有更新靜態資源,記得可以先清除快取,重新載入網站。
沒有設定好快取有可能會跑版,網頁載入有先後順序,須透過專業知識去調整。
清除這類資訊後會有什麼影響
清除快取和 Cookie 後:
- 網站上的部分設定會遭到刪除。舉例來說,假設您曾登入某個網站,您必須重新登入。
- 系統必須重新載入圖片等內容,因此部分網站的載入速度可能會變慢。
什麼時候需要清除快取?
有時候會碰到這個狀況,網頁來回修改中,網頁設計公司說都已經改好了,但打開瀏覽器看卻還是上一版或是版型跑版,又或是電腦看已經是更改好的版本,但打開手機網頁一看,卻是錯誤的設計?
這時候就可以清理一下快取!快取通常儲存於硬碟、伺服器等裝置,在一定時間內只會更新一次,造成即時的網頁其實已經更改了,看起來卻沒有作用。
清理快取不會對網站造成任何負面的影響,也不會有頁面因此消失,也不會清了快取網頁就跑版,可以放心地清除快取。
瀏覽器清除快取說明
這邊附上一些瀏覽器官方建議的清除快取方式:
- Chrome 的 Google 帳戶清除快取和 Cookie
- 在 Mac 上的 Safari 中清除 Cookie和網站資料
- 在 Microsoft Edge 中清除快取和 Cookie
- Firefox 的快取清除
資料來源:Google帳戶說明、維基百科、Types Of Web Cache: WordPress Caching And Page Speed Demystified
延伸閱讀: