動態指令碼加速
直譯器將動態指令碼解釋成操作碼(opcode)的這一過程也存在一定的開銷;動態指令碼加速就是將快取的思路搬到操作碼層,實現對操作碼的快取;
php可以選擇:apc 、eaccelerator、xcache等將opcode快取在共享記憶體中。python能選擇什麼?
動態指令碼加速技術主要用於解決cpu、記憶體的系統瓶頸,對i/o引起的系統瓶頸幫助非常有限。
瀏覽器快取
盡可能地讓web站點的內容快取在使用者瀏覽器中,這樣將在一定程度上減少了伺服器的計算開銷,也避免了有些由於不必要重複傳輸而帶來的頻寬浪費。
ie:在使用者本地設定臨時檔案目錄,用於存放快取。
firefox:採用二進位制檔案的方式來儲存和管理快取檔案,在firefox瀏覽器的位址列中輸入about:cache即可檢視快取內容;除在磁碟中儲存快取,對一些命中率較高的內容同時放入記憶體快取中,從而實現多級快取;
快取協商
瀏覽器和伺服器通過快取協商機制實來完成瀏覽器端快取的建立、儲存和過期檢查等一系列過程;
快取協商的大致過程:
動態生成的內容一般不存在傳統意義上靜態頁面的「最後修改時間」,所以需要動態程式為http響應增加最後修改時間的標記;否則瀏覽器不會進行快取。
etag
etag不是通過檔案最後修改時間來判斷是否需要更新,而是通過一串編碼(etag)來標記內容,etag沒有變,內容就不需要更新;
etag由web伺服器來生成,如apache為乙個靜態檔案的http響應頭增加標記
web伺服器用重新計算後的etag和瀏覽器請求頭中的進行對比,如果相同則返回304狀態碼,表示沒有更新,可以使用本地快取;
如何請求頁面
天天用瀏覽器,但是對瀏覽器的一些操作細節的差異還真不清楚,看看吧:
ctrl + f5 :強制重新整理,使瀏覽器對網頁及其中的元件都直接從伺服器獲取,不使用快取協商。
f5:一般重新整理,等同於點瀏覽器的「重新整理」按鈕,能夠使瀏覽器使用必要的快取協商,但不允許使用本地快取,即可以使last-modified發揮作用,而使expires無效;
單擊位址列的「轉到」,等同於輸入url後按回車,瀏覽器會對所有未過期內容使用本地快取。
Web站點的傳輸 《構建高效能Web站點》閱讀1
1 資料是如何傳送的 a 應用程式將要傳輸的資料放入記憶體中 b 應用程式使用send等庫函式,通知核心將傳輸資料放入核心快取區。資料是以佇列的形式進入的,如果資料較多,則等前一波資料傳送完後,再傳送另外一撥資料,具體顯示為send會多呼叫幾次 c cpu通知網絡卡將核心緩衝區的資料存放到網絡卡緩衝...
構建高效能Web站點 筆記四
第七章 web伺服器快取 對url對映進行快取 ssi模式下對內容的通讀 有什麼提高?需要了解url解析過程。對於apache,它提供了兩個磁碟快取和記憶體快取mod disk cache,mod mem cache。mod disk cache在磁碟上維護了一塊多個程序的快取區,在效能上比mod ...
原創 構建高效能的Web站點
原創 構建高效能的web站點 一 web站點高效能主要體現在 高可用,低成本,高效能,可擴充套件,易維護 二 構建高效能的web站點措施 1 瀏覽器端優化 快取1 瀏覽器快取 2 web負載均衡 快取2 反向 快取 3 web元件分離 快取3 動態內容快取 快取4 分布式快取 快取5 資料庫快取及效...