Web快取大作戰 常見問題解答

2021-07-05 08:09:47 字數 3698 閱讀 1653

什麼是web快取,為什麼要使用它?

快取的型別:

瀏覽器快取;

**伺服器快取;

閘道器快取;

web快取無害嗎?為什麼要鼓勵快取?

web快取如何工作

如何控制快取和不快取:

html meta標籤 vs. http頭資訊;

pragma http頭資訊(以及為什麼不起作用);

使用expires http頭資訊控制不過期;

cache-control(快取控制)http頭資訊;

驗證器和驗證;

建立支援快取**的小技巧;

編寫支援快取的指令碼;

常見問題解答;

實現需注意的:web伺服器端;

實現需注意的:服務端指令碼;

關於本文件;

常見問題解答

快取可用的最重要事情是?

其中乙個不錯的策略是找出常用的、規模較大的內容(尤其),然後優先處理之。

我該如何利用快取讓我的頁面盡可能的快?

最應該快取的內容設定乙個較長的過期時間。驗證有助於減少檢視內容的時間,不過快取仍會連線源伺服器檢視是不是過期了。如果快取已經知道內容是新鮮的,直接返回。

我知道快取是個好東西,但是我想隨時知道多少人訪問了我的網頁!

如果你必須知道每一次頁面被訪問的情況,可以選擇頁面上的乙個小元素(或頁面本身),然後給這個元素乙個適當的頭資訊使它是不可快取。比如,你可以在每乙個頁面上引用乙個1畫素×1畫素的不可快取(如scr位址後面加個隨機數add)的透明。referer頭資訊將會包含呼叫它的頁面資訊。

我該如何檢視http頭?

許多瀏覽器可以檢視expires和last-modified頭資訊,如右鍵→檢視頁面資訊或類似面板。例如,在firefox瀏覽器下add:

表示要看到完整的頭,您可以使用telnet⑪客戶端手動連線到web伺服器上。

為此,你可能需要用乙個字段指定埠(預設是80),或者連線到www.example.com:80或者www.example.com 80(注意是空格),更多設定請參考一下telnet客戶端的文件。

一旦連線到該**,輸入請求。比如,你想檢視的頭資訊,首先連線到www.example.com, 使用80埠,並輸入:

[return]等同敲回車鍵,最後輸入兩次確認。這樣就會輸出頭資訊,然後跟著實際內容。如果只想看到頭資訊,使用head來替換get.

⑪telnet:telnet協議是tcp/ip協議族中 的一員,是internet遠端登陸服務的標準協議和主要方式。它為使用者提供了在本地計算機上完成遠端主機工作的能力。在終端使用者的電腦上使用telnet程式,用它連線到伺服器。終端使用者可以在telnet程式中輸入命令,這些命令會在伺服器上執行,就像直接在伺服器的控制台上輸入一樣。可以在本地就能控**務器。要開始乙個telnet會話,必須輸入使用者名稱和密碼來登入伺服器。telnet是常用的遠端控制web伺服器的方法。

我的頁面是密碼保護的,**快取是怎麼處理的?

預設情況下,http驗證保護的頁面是私有的,共享快取是不能儲存的。然而,你可以通過cache-control: public頭的設定使其公有。http 1.1標準相容的快取伺服器可以使之快取。

如果你希望這些快取的頁面在使用者檢視之前還要驗證一下,可以組合使用cache-control: public和no-cache頭,這相對於告訴快取器它從快取中送出內容前必須遞交客戶端的驗證給原始伺服器。這個頭資訊如下所示:

cache-control: public, no-cache

不管怎麼,這是最小化驗證最好的方法;例如,你的不敏感,你可以把它放在分離的目錄中,並配置你的服務對它們不做強制驗證。這樣,那些就會很自然的被快取了。

如果人們通過快取訪問我的**,我應該擔心安全嗎?

ssl頁面不會被**伺服器快取,所以這個你不需要擔心。但是,**伺服器就好非ssl頁面請求以及url抓取這口,***,這是不安全的。無良的管理員可能就會收集**使用者的資訊,尤其在url中。

事實上,任何網路管理員都可以收集你的客戶端和伺服器端之間的這類資訊。cgi ⑫指令碼有個漏洞,會把使用者名稱和密碼放在自身的url位址中,這很容易讓其他人發現使用者的登陸資訊。

如果你懂得網際網路安全的些基本機制,就不會對**快取感到任何驚訝。

⑫cgi:通用閘道器介面(common gateway inte***ce). 用於初始化軟體服務的伺服器方介面。這套介面描述了web伺服器與同一計算機上的軟體的通訊方式。

通用閘道器介面,它是一段程式,執行在伺服器上,提供同客戶端html頁面的介面,通俗的講cgi就像是一座橋,把網頁和web伺服器中的執行程式連線起來,它把html接收的指令傳遞給伺服器,再把伺服器執行的結果返還給html頁;用cgi可以實現處理**,資料庫查詢,傳送電子郵件等許多操作,最常見的cgi程式就是計數器。cgi使網頁變得不是靜態的,而是互動式的。

我在尋找乙個整合的web發布解決方案。哪些是可快取的?

這個是不確定的。一般來說,越複雜的系統越難快取。最差的情況就是所有的內容都是動態生成,並且不提供校驗器,與快取壓根無緣。你可以和你**商的技術人員溝通獲取更多資訊,並參考下面實現注意事項。

我的快取乙個月後才到期,我現在就想變動!

expires頭是繞不過去的,除非快取(瀏覽器或者**)空間不足才會刪除副本,快取副本會一直使用。

最有效的方法是修改鏈結,這樣會從源伺服器獲取完整的新內容。請記住,呼叫的這個頁面也會被快取的,正因如此,我們需要讓以及其他類似的靜態資源易快取,而頁面呢可以隨著自身的改變(例如改變了乙個的url位址add)即時更新。

如果你想擺脫特定快取,過載內容,可以試試強制重新整理(在firefox中,shift鍵+reload按鈕等同於處理pragma: no-cache請求頭)或者讓快取管理員使用某些介面刪除內容。

我執行乙個web hosting服務。我怎樣才能讓我的使用者發布快取友好的網頁?

如果你使用apahe,可以考慮允許他們使用.htaccess檔案並提供相應的文件。

否則你需要在每乙個虛擬主機上為各種快取屬性建立預定的區域。比如:你可以指定乙個叫/cache-1m的目錄用來放讀取後要快取乙個月的內容,然後再建乙個/no-cache的目錄,並在頭資訊中指定這麼目錄中的內容不被快取。

不管上面你做的如何,總之最好優先給使用者量大的客戶做快取處理。大部分伺服器節約的流量以及負載都是來自高容量的**。

我明明告訴網頁要好好快取,但它老是去請求,怎麼破?

快取伺服器並不總是要求內容要保持並重用,某些條件下,他們是不儲存不重用的,所有的快取伺服器都回基於檔案的大小、型別(、頁面…),或者伺服器空間的剩餘來確定如何快取。如果你的檔案比較大或很熱門,可能就不會被快取。有些快取伺服器允許管理員決定哪些內容要儲存,有些快取伺服器允許內容長存快取中,所以,它們總是可用的。

(未完待續)

常見問題解答

怎麼判斷乙個exe可執行檔案是用什麼語言開發的?答 請試試peid偵殼工具吧!批處理命令中注釋符號是什麼?答 1 注釋內容 第乙個冒號後也可以跟任何乙個非字母數字的字元 2 rem 注釋內容 不能出現重定向符號和管道符號 3 echo 注釋內容 不能出現重定向符號和管道符號 nul 4 if not...

C 常見問題解答

c 常見問題解答 引言篇1.學習c 是否必須先了解c?2.怎樣開始學習c 3.改進c 程式的最好方法是什麼?4.對於小的程式c優於c 對嗎?5.c是c 的子集嗎?6.c 與c有什麼區別?7.為什麼用c 產生的 hello world 的程式 要比用c產生的長十倍?8.什麼是物件導向的程式設計 oop...

MySQL常見問題解答

問題一 mysql每八小時自動斷開連線。解決方法 linux unix下開啟 etc my.cnf,在屬性組mysqld下面新增引數如下 mysqld interactive timeout 28800000 wait timeout 28800000 windows下在my.ini文中增加 int...