## 緩存
高速緩存(英語:cache,簡稱緩存),在計算機中是一個用空間換時間的東西。最早指的是 CPU 和內存之間的高速緩沖,如今緩存的概念已被擴充,不僅在CPU和主內存之間有Cache,而且在內存和硬盤之間也有Cache(磁盤緩存),乃至在硬盤與網絡之間也有某種意義上的Cache──稱為Internet臨時文件夾或網絡內容緩存等。凡是位于速度相差較大的兩種硬件之間,用于協調兩者數據傳輸速度差異的結構,均可稱之為Cache。在這個章節我們只討論互聯網應用中的緩存應用技巧。
### 原則
“用空間換時間”目的是什么呢?大部分的時候就是為了使程序運行的更快,避免某些環節上的 **瓶頸** 。這是使用緩存最大的一個原則。換言之,如果不能做到更快、負載更低,那我們就需要反思技術方案的健壯性了。
### 瓶頸
說到緩存,首先需要找到整個應用的“瓶頸”,也就是相對集中、或者更慢的地方
#### 什么環節會變慢?
1. 磁盤 IO,這是整個系統中最后的操作(將數據寫入磁盤,固化數據)。
2. 程序同步執行
3. 各種數據競爭、文件或者數據鎖
4. 不合理的應用邏輯
5. 其他...
### 類型
準確的找到你的應用中的瓶頸,是制定技術方案、恰當的使用緩存的前提條件。
通常來說,內存比磁盤操作更快,哪怕磁盤操作是在 SSD 上進行。而毫無邏輯的文件讀取,顯然會比數據庫操作來的更快一點。所以,只是單單從這個角度,我們可以把緩存分為:
- 內存緩存
- 文件緩存
而從緩存部署的位置來區分又可以區分為:
- 服務端緩存
- 客戶端緩存
而從 WEB 應用的架構部署來區分:
- 應用層緩存
- 代理層緩存
- 內容分發網絡(CDN)
不同的維度可能還有其他區分,如果我們只是把范圍限定在互聯網 WEB 應用的實施,那也許簡單的了解和一些經典的方案,就能使你的應用承載能力有質的的飛躍。