《構建高性能web站點》閱讀筆記(二)
緩存(cache)和緩沖(buffer)的區別:
緩存 (cache):緩存的目的是把需要花費昂貴開銷的計算結果保存起來,在以后需要的時候直接取出,避免重復的計算。
緩沖 (buffer):目的在于改善各部件之間因為速度不同而引發的問題。起到將快速設備與慢速設備平滑銜接的作用。
頁面緩存(Page Cache)
頁面緩存就是將動態計算的結果進行緩存,避免動態內容不必要的重復計算,主要是針對動態生成的html頁面和動態圖片或動態XML數據等;
緩存持久化和搜索
如果緩存文件非常多,cache目錄下會擁擠大量的文件,如果緩存的文件的讀寫頻度比較高,對CPU的影響是非常大的;
解決的方案:
1、使用支持目錄hash加速目錄遍歷的文件系統來緩解這種情況,如:XFS和reiserfs;
2、緩存目錄分級
過期檢查
緩存過期時間
緩存有效期長度
把緩存放到內存中
如果將緩存數據放到磁盤文件中,每次緩存加載和過期檢查都在磁盤I/O的開銷,如果磁盤同時還運行著如數據庫這樣的I/O密集型應用,那么緩存文件的I/O操作便會存在一定的延遲。
作者在這里提到了兩個PHP的緩存框架:APC和XCache。
緩存服務器
將HTML緩存在一臺獨立的緩存服務器中,利用memcached,可以很容易的通過TCP將緩存存儲在其他的服務器中,memcached同樣也是用內存空間保存緩存數據的,可以減少不必要的I/O。memcached對每一個key都維護一個過期時間,一旦過期,會自動刪除這個key。
局部無緩存
局部無緩存允許在頁面中指定一塊包含動態數據的HTML代碼段,每次這些動態數據都需要實時計算,然后和其余的緩存合成為最終的網頁。
靜態化內容
動態內容緩存中,每次用戶的請求都要送到動態程序,動態程序根據緩存的有效期決定是否輸出緩存。因此這種控制權的代價也是比較昂貴的。
將動態頁面×××.php的緩存從cache目錄拿出來,放到同一個目錄中:×××.html,直接通過瀏覽器訪問對應靜態頁面。
當然靜態化頁面也是需要動態程序來實現的,一般靜態化頁面的管理都是通過CMS(內容管理系統)來進行管理的。
靜態化頁面的更新策略:
1、在數據更新時,重新生成靜態化內容;
2、定時重新生成靜態化內容;
局部靜態化
靜態化頁面可以通過SSI(服務器端包含)技術實現各個局部頁面的獨立更新。
SSI技術可以在任何一個主流web服務器中找到相應的模塊,如Apache的mod_include和Lighttpd的mod_ssi。
名詞解釋:PV
PV (page view) 即頁面瀏覽量,或點擊量,通常是衡量一個 網絡新聞 頻道或網站甚至一條網絡新聞的主要指標。
定義:一個訪問者在24小時(0點到24點)內到底看了你網站幾個頁面。需要注意的是:同一個人瀏覽你網站同一個頁面,不重復計算pv量。pv就是一個訪問者打開了你網站的幾個頁面。
pv的計算:當一個訪問者訪問的時候,記錄他所訪問的頁面和對應的IP,然后確定這個IP今天訪問了這個頁面沒有。如果你的網站到了23點,單純IP有60萬條的話,每個訪問者平均訪問了3個頁面,那么pv表的記錄就要有180萬條。

浙公網安備 33010602011771號