在IIS 7.0中配置動(dòng)態(tài)壓縮
互聯(lián)網(wǎng)信息服務(wù)(IIS)的每個(gè)后續(xù)版本都會(huì)引入更多的選項(xiàng)來控制輸出的緩存和壓縮。比如,IIS 7.0***安裝時(shí)會(huì)默認(rèn)啟用壓縮靜態(tài)文件,而禁用動(dòng)態(tài)產(chǎn)生的文件壓縮功能,尤其是.ASP或者.ASPX網(wǎng)頁(yè)。
推薦專題:IIS服務(wù)“講武堂”
因此,這個(gè)功能必須在IIS 7.0中手動(dòng)啟用,因?yàn)閴嚎s動(dòng)態(tài)產(chǎn)生的內(nèi)容可能會(huì)出現(xiàn)幾個(gè)問題。由于IIS 7.0的某些變化,靜態(tài)內(nèi)容現(xiàn)在是默認(rèn)壓縮的,這讓處理器的壓縮效率更高。
使用動(dòng)態(tài)壓縮時(shí),可以設(shè)置的選項(xiàng)之一是一個(gè)叫做緩存前動(dòng)態(tài)壓縮的ASP.NET應(yīng)用程序指令,它是urlCompression元素的一部分。請(qǐng)注意,你也可以通過urlCompression來設(shè)定靜態(tài)和動(dòng)態(tài)壓縮,但是絕大多數(shù)時(shí)間你只能通過應(yīng)用程序的IIS控制面板來設(shè)定。
所以緩存前動(dòng)態(tài)壓縮選項(xiàng)(或者簡(jiǎn)稱BeforeCache)描述了IIS如何壓縮并緩存動(dòng)態(tài)生成內(nèi)容。當(dāng)把這個(gè)選項(xiàng)的值設(shè)成TRUE時(shí),內(nèi)容會(huì)被生成、壓縮、添加到一個(gè)緩存,然后按順序從該緩存輸出到客戶端。當(dāng)把值設(shè)成FALSE時(shí),生成的內(nèi)容格式不是壓縮的,得到請(qǐng)求之后再重新壓縮。
把BeforeCache設(shè)成TRUE似乎是一個(gè)好主意。如果你需要壓縮許多相同的動(dòng)態(tài)生成內(nèi)容,把它們提前壓縮一次然后再多次使用還是有意義的。你會(huì)節(jié)省大量的帶寬以及大量的CPU周期。不過,在有些情況下BeforeCache不會(huì)起作用,應(yīng)該加以說明。
首先,根據(jù)微軟對(duì)BeforeCache的評(píng)論,“當(dāng)輸出緩存響應(yīng)刷新后,在該響應(yīng)進(jìn)入輸出緩存之前動(dòng)態(tài)壓縮不會(huì)執(zhí)行。”這就意味著那些擁有專用輸出緩存處理方式的網(wǎng)站在使用BeforeCache時(shí)可能會(huì)出現(xiàn)問題,比如說提供過時(shí)內(nèi)容、或者給一個(gè)用戶提供其他用戶的定制內(nèi)容等。
另一件需要注意的事情是:不同類型的壓縮形式對(duì)緩存功能會(huì)有什么樣的影響。IIS 7.0支持GNU壓縮和deflate壓縮,它們是兩種常用的網(wǎng)絡(luò)客戶端壓縮類型。此外,他們現(xiàn)在的運(yùn)行更可靠,在IIS5.0中,壓縮活動(dòng)明顯失敗。當(dāng)一個(gè)客戶端沒有明確指定它可以接受什么代碼時(shí),或者當(dāng)你的應(yīng)用程序不能處理不同編碼的頁(yè)面請(qǐng)求時(shí),事情會(huì)變的很復(fù)雜。
***,網(wǎng)頁(yè)不會(huì)自動(dòng)緩存。相反,對(duì)于那些頻繁請(qǐng)求的內(nèi)容,IIS會(huì)進(jìn)行自動(dòng)緩存。默認(rèn)情況下,10秒鐘內(nèi)請(qǐng)求兩次或者兩次以上的網(wǎng)頁(yè)都屬于這種類型,就像frequentHitThreshold 和 frequentHitTimePeriod服務(wù)器參數(shù)控制的那樣。如果一個(gè)網(wǎng)頁(yè)每隔五分鐘才請(qǐng)求一次,那么它將不會(huì)被自動(dòng)緩存。如果人們正在一個(gè)系統(tǒng)上測(cè)試緩存功能,但是開始的時(shí)候他們沒有生成合適的負(fù)載來激發(fā)緩存。
【編輯推薦】