減少SSL⑧的使用:因為共享緩存不能存儲認證頁面,只在必要的時候使用,并且在SSL頁面上減少圖片的使用。
使用REDbot⑨檢查你的網站:可以幫助你應用本文所介紹的一些概念。
?、?SSL:全稱Secure Socket Layer – 安全套接層,為Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之 傳輸過程中不會被截取及竊聽。目前一般通用之規格為40 bit之安全標準,美國則已推出128 bit之更高安全標準,但限制出境。只要3.0版本以上之I.E.或Netscape瀏覽器即可支持SSL。
?、?REDbot:REDbot = RED + robot,是個機器人,檢查HTTP資源,看他們如何會表現,指出常見的問題,并提出改進建議。雖然它屬于HTTP一致性測試儀,但卻可以找到不少HTTP相關問題。
編寫支持緩存的腳本
默認情況下,大多數的腳本不會返回驗證器(Last-Modified或Etag響應頭)或新鮮度信息(Expires或Cache-Control)。盡管有些腳本的確是動態的(意味著每次請求都有不同的響應),還是有很多(如搜索引擎或數據庫驅動的)網站可以從緩存中受益。
一般來講,對于同一個請求(無論是幾分鐘還是幾天之后),如果腳本產生的內容是可重復的,則可以緩存。腳本內容的改變僅僅依賴于URL,則可以緩存。如果是依賴于Cookie,認證信息或其他外部條件,很可能不緩存。
最利于緩存的腳本就是在內容改變時導出成靜態文件,服務器會想對待其他Web一樣對待它的,生成以及使用驗證器,于是你可以好好地喝杯咖啡了。記住,只有文件更改的時候才寫入,這樣Last-Modified時間就會被保存下來。
另外的腳本緩存之道就是使用age相關的頭部,相比Expires, Cache-Control: max-age更容易些,因為是相對時間,每次新請求完成后重新設置,時間到了,再重新請求,再設置新的相對過期時間。
如果上面的做法你搞不定,你還可以試試通過腳本生成一個校驗器, 然后回應If-Modified-Since和/或If-None-Match請求。通過分析HTTP頭信息,在適合的時候回應304 Not Modified. 不幸的是,這不是個打打醬油就能搞定的任務。
其他一些技巧
不要使用POST:若是獲取數據,盡量不使用POST模式,因為POST方式返回內容大部分不會被緩存,相對的,通過GET以路徑和查詢發送的信息被緩存存儲下來供后續使用。
URL地址中不要嵌入特定的用戶信息,除非生成的內容對于用戶而言是唯一的。
不要指望同一用戶的所有請求來自同一主機,因為緩存經常協同工作。//zxx: 嘛意思?
生成Content-Length⑩頭信息。實現不難,可讓你的腳本以持久連接(persistent connection)形式響應。這允許客戶端在一個TCP/IP請求上請求多個內容,而不是為每次請求單獨建立連接,這樣你的網站相應會快很多。
詳見實現注意事項。
?、釩ontent-Length:指明實體正文的長度,以字節方式存儲的十進制數字來表示。在數據下行的過程中,Content-Length的方式要預先在服務器中緩存所有數據,然后所有數據再一股腦兒地發給客戶端。
常見問題解答
緩存可用的最重要事情是?
其中一個不錯的策略是找出常用的、規模較大的內容(尤其圖片),然后優先處理之。
我該如何利用緩存讓我的頁面盡可能的快?
最應該緩存的內容設置一個較長的過期時間。驗證有助于減少查看內容的時間,不過緩存仍會連接源服務器查看是不是過期了。如果緩存已經知道內容是新鮮的,直接返回。
我知道緩存是個好東西,但是我想隨時知道多少人訪問了我的網頁!
如果你必須知道每一次頁面被訪問的情況,可以選擇頁面上的一個小元素(或頁面本身),然后給這個元素一個適當的頭信息使它是不可緩存。比如,你可以在每一個頁面上引用一個1像素×1像素的不可緩存(如scr地址后面加個隨機數Add)的透明圖片。Referer頭信息將會包含調用它的頁面信息。
請注意,即使這樣也不能給出你用戶的精確統計,并且對通過互聯網訪問的用戶也不是很友好:產生不必要的流量,并強迫用戶等待未被緩存的內容從網絡上下載回來。更多的信息可參見拓展閱讀中的“解讀訪問統計”對應內容。
我該如何查看HTTP頭?
許多瀏覽器可以查看Expires和Last-Modified頭信息,如右鍵→查看頁面信息或類似面板。例如,在Firefox瀏覽器下Add:
表示要看到完整的頭,您可以使用Telnet⑪客戶端手動連接到Web服務器上。
為此,你可能需要用一個字段指定端口(默認是80),或者連接到www.example.com:80或者www.example.com 80(注意是空格),更多設置請參考一下telnet客戶端的文檔。
一旦連接到該網站,輸入請求。比如,你想查看http://www.example.com/foo.html的頭信息,首先連接到www.example.com, 使用80端口,并輸入:
GET /foo.html HTTP/1.1 [return]Host: www.example.com [return][return]
[return]等同敲回車鍵,最后輸入兩次確認。這樣就會輸出頭信息,然后跟著實際內容。如果只想看到頭信息,使用HEAD來替換GET.
⑪Telnet:Telnet協議是TCP/IP協議族中 的一員,是Internet遠程登陸服務的標準協議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力。在終端使用者的電腦上使用 telnet程序,用它連接到服務器。終端使用者可以在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制臺上輸入一樣???以在本地就能控制服務器。要開始一個telnet會話,必須輸入用戶名和密碼來登錄服務器。Telnet是常用的遠程控制Web服務器的方法。
我的頁面是密碼保護的,代理緩存是怎么處理的?
原文轉自:http://web.itivy.com/article-805-1.html