《構建高性能web站點》閱讀筆記(三)
動態腳本加速
解釋器將動態腳本解釋成操作碼(opcode)的這一過程也存在一定的開銷;動態腳本加速就是將緩存的思路搬到操作碼層,實現對操作碼的緩存;
PHP可以選擇:APC 、eAccelerator、XCache等將opcode緩存在共享內存中。Python能選擇什么?
動態腳本加速技術主要用于解決CPU、內存的系統瓶頸,對I/O引起的系統瓶頸幫助非常有限。
瀏覽器緩存
盡可能地讓Web站點的內容緩存在用戶瀏覽器中,這樣將在一定程度上減少了服務器的計算開銷,也避免了有些由于不必要重復傳輸而帶來的帶寬浪費。
IE:在用戶本地設置臨時文件目錄,用于存放緩存。
FireFox:采用二進制文件的方式來存儲和管理緩存文件,在Firefox瀏覽器的地址欄中輸入about:cache即可查看緩存內容;除在磁盤中存儲緩存,對一些命中率較高的內容同時放入內存緩存中,從而實現多級緩存;
緩存協商
瀏覽器和服務器通過緩存協商機制實來完成瀏覽器端緩存的創建、存儲和過期檢查等一系列過程;
緩存協商的大致過程:

Last-Modified
動態生成的內容一般不存在傳統意義上靜態頁面的“最后修改時間”,所以需要動態程序為HTTP響應增加最后修改時間的標記;否則瀏覽器不會進行緩存。
ETag
ETag不是通過文件最后修改時間來判斷是否需要更新,而是通過一串編碼(ETag)來標記內容,ETag沒有變,內容就不需要更新;
ETag由WEB服務器來生成,如Apache為一個靜態文件的http響應頭增加標記
ETag:74177-b-46585209c1bc0
瀏覽器在下一次請求的時候,在http請求頭中增加標記:
If-None-Match:74177-b-46585209c1bc0
web服務器用重新計算后的ETag和瀏覽器請求頭中的進行對比,如果相同則返回304狀態碼,表示沒有更新,可以使用本地緩存;
如何請求頁面
天天用瀏覽器,但是對瀏覽器的一些操作細節的差異還真不清楚,看看吧:
Ctrl + F5 :強制刷新,使瀏覽器對網頁及其中的組件都直接從服務器獲取,不使用緩存協商。
F5:一般刷新,等同于點瀏覽器的“刷新”按鈕,能夠使瀏覽器使用必要的緩存協商,但不允許使用本地緩存,即可以使Last-Modified發揮作用,而使Expires無效;
單擊地址欄的“轉到”,等同于輸入URL后按回車,瀏覽器會對所有未過期內容使用本地緩存。

浙公網安備 33010602011771號