天天看點

高性能建站指南筆記

壓縮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來修改這個檔案的内容

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

繼續閱讀