高效能建站指南筆記

wangtaotao發表於2011-02-23

壓縮css和js指令碼是非常值得的。
根據經驗,通常對大於1kb或者2kb的檔案進行壓縮。對圖片進行壓縮是得不償失的。因為會消耗許多cpu資源(包括伺服器端和客戶端的)

LoadModule expires_module modules/mod_expires.so

Cache-Control:Private 禁用代理
apache的版本與壓縮元件的關係:1.3對應了mod_gizp 2.x對應了mod_deflate
也就是:1.3的gizp功能由mod_gizp提供。那麼2.x版本中的gzip功能由mod_deflate提供

首頁平均使用了6-7個指令碼檔案,1-2個css檔案 soutuan.com使用了13個js檔案請求

精簡js程式碼工具:雅虎公司jsmin DoJocompressor

使用yahoo!UI進行ajax開發,好處在哪裡?

使用keep-Alive那麼就意味著:保持著連線的狀態。tcp連線是開啟的。此時不需要查詢dns

dns快取到底可以提高什麼呢?輸入www.soutuan.com,那麼首先瀏覽器或者作業系統會向dns伺服器發出查詢ip的請求。這一段需要時間

怎麼測試我的頁面產生多少dns查詢時間?

為什麼需要將樣式放在頂部才好?
就是為了實現,當下載頁面的時候,頁面逐步呈現的效果。而不是讓使用者看到一個殘缺的頁面。就比如開啟頁面的時候變亂了。根據一個原理:元件(css,js)是按照程式碼在文件中的順序進行下載的。
而把樣式表放在頂部,會阻礙頁面逐步呈現(難怪,在ie下面經常出現空白現象)
只有在ie下才會產生這種延遲現象。也就是網速一慢的話,就會因為延遲而出現空白的效果。而不是逐步呈現的效果
ie有一種特效:儘管已經下載完所有元件,但是依然會等到樣式表下載完全才會呈現頁面

css放在底部的示範:
http:stevesouders.com/hpws/css-bottom.php

總結:樣式表放在頂部還是在底部不會影響整個 頁面的下載時間。調整位置後,頁面的整體下載時間還是不變的。
那麼,為什麼要換呢?就是想通過一種逐步呈現的現象,讓使用者感覺頁面現在速度更快了。

無樣式內容的css閃爍 http://stevesouders.com/hpws/css-fouc.php
就是。等到下載完成後,頁面的效果馬上進行了改變,像閃爍一樣的

304狀態碼就是告訴瀏覽器,我這個伺服器上的該檔案自生成日期來一直沒有修改過。並且就不再傳送響應體了(就是具體的css,html,js檔案內容)

expires頭部資訊簡單理解:?裡面是指定了該檔案的一個過期時間(表示到該時間為止,之前的響應才是有效的。之後無
效),告訴瀏覽器,在該時間之內,你可以使用本地儲存的副本。
不足:要求客戶端的時間和伺服器端的時間保持一個同步才行

替代expires的解決方案是max-age,假如同時使用兩者,max-age會重寫expires
使用mod_expires模組的一個命令可以配置,檔案的過期時間是請求後的多久。秒數計算

expires的根本目的是什麼?減少http的請求。而不是減少檔案(css,js)的傳送。因為不管你是否使用了expires,
假如瀏覽器檔案已經過期了,都會從伺服器下載新的檔案的。expires要做的只是,馬上就知道已經過期與否,這樣就不需要去請求一次(避免了一次請求),以便確定是否過期
響應中就已經發給瀏覽器,我這個檔案是否過期嗎?

If-Modified-Since是瀏覽器發給伺服器的請求頭。伺服器接到該值後,就會將last-modified與該值進行比較,以此確定是否有更新(沒有更新就返回 304 響應)

If-Modified-Since:伺服器發過來的該檔案的最後伺服器修改時間。快取在本地

只對網頁進行快取:
<meta http-equiv=”Cache-Control” content=”max-age=7200″ />
<meta http-equiv=”Expires” content=”Mon, 20 Jul 2009 23:00:00 GMT” />

對該頁面的js,css等檔案無效的

max-age與expires的區別:max-age的值格式是:秒。expires的時間格式是一具體的時間,比如:Thu, 01 Dec 1994 16:00:00 GMT (必須是GMT格式)也就是在這個時候過期。而max-age比如是7200秒。那麼就是在該頁面被該使用者請求的時間後7200秒後過期。

expires也可以不設定成具體的日期,而是以Atime格式。也就是相對最後訪問時間多少秒後過期。

expires和cache-control的另外一種區別:Expires頭內容和Cache-Control頭的max-age指令。這樣的說法,說明。expires和Cache-Control都是同一級別的。是一個頭。為文件生成Expires和Cache-Control頭是mod_expires模組的作用 cache-control是http1.1才引入的。以前沒有。

ExpiresByType 和 ExpiresDefault 指令就是設定具體的值。哪種型別的檔案,設定expires的值
前提:只有當ExpiresActive On才會按照上面兩個指令去生成頭

cache-control注意版本問題。是http1.1才引入的。而1.0並沒有完全實現。

Etages也是http1.1引入的。實體標籤。entity tages

etages也是跟if-modified-since類似方式。只是不是日期。而是標記,相當於一個版本。跟if-none-match(瀏覽器傳送給伺服器的)匹配。

etages只適合使用在這樣的情況:你的網站是宿主在同一臺伺服器上。如果在多臺伺服器就會帶來問題。因為,etages是針對寄宿網站來說才是唯一的。真是無法解釋這個?

# access (read the file`s contents)
# change the status (modify the file or its attributes)
# modify (change the file`s contents)
1。atime:最後一次讀這個檔案的時間,如使用more來讀這個檔案
2。ctime:最後一次修改該檔案的時間,如使用chmod來修改這個檔案的屬性
3。mtime:最後一次修改該檔案內容的時間,如使vi來修改這個檔案的內容

 

 

 

備註:這是剛畢業時候學習《高效能建站指南》記錄下來的


相關文章