日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
緩存設(shè)計詳解:低成本的高性能Web應(yīng)用解決方案

【精選譯文】過去幾年中,Web應(yīng)用程序已經(jīng)從簡單的HTML頁面堆積演變成使用各種各樣的技術(shù)構(gòu)建高可擴展性和交互式的富應(yīng)用程序。設(shè)計和開發(fā)這類應(yīng)用程序變得越來越復(fù)雜,此外,決策者正越來越多地尋求構(gòu)建更豐富的互動功能到這些應(yīng)用程序中,同時還要保證可維護(hù)性和高性能,但高性能意味著高成本。為了構(gòu)建提供給最終用戶體驗的是一個牢固的應(yīng)用程序,開發(fā)人員需要解決潛在的性能瓶頸。

創(chuàng)新互聯(lián)公司專注于印臺網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供印臺營銷型網(wǎng)站建設(shè),印臺網(wǎng)站制作、印臺網(wǎng)頁設(shè)計、印臺網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造印臺網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供印臺網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

本文側(cè)重于緩存——它是交付高性能Web應(yīng)用程序急需的——也簡要介紹一下壓縮功能。有一些公司在生產(chǎn)和銷售專門的壓縮和性能產(chǎn)品。本文旨在簡單介紹在尋求專業(yè)產(chǎn)品解決性能問題之前開發(fā)人員可以在客戶端和服務(wù)器端對Web應(yīng)用程序做的一些性能改進(jìn)。

性能瓶頸

性能瓶頸主要體現(xiàn)在高延時、擁塞和服務(wù)器負(fù)載。緩存不能完全解決掉這三個問題,但經(jīng)過詳細(xì)的設(shè)計考慮,緩存是可以提高性能的。在服務(wù)器端和客戶端都緩存內(nèi)容,據(jù)調(diào)查,平均而言,下載HTML只需要總的用戶響應(yīng)時間的10-20%,剩下的80-90%全部用于下載頁面中的其它組成內(nèi)容,這些組成內(nèi)容通常包括圖像,如公司logo,緩存logo可以有效避免到服務(wù)器的多次往返。在前日上發(fā)布的加速,加速,再加速:來自Google的網(wǎng)站加速技巧大全中,Google提到的提升網(wǎng)站速度和性能的低成本技巧中就包括緩存這一條。至于架構(gòu)設(shè)計方面,則可參考的視頻專題:大型網(wǎng)站架構(gòu)專家談。

簡單地講,緩存是臨時存儲。它將數(shù)據(jù)復(fù)制到不同的計算機或不同于原始數(shù)據(jù)源的位置,有了正確的配置,訪問緩存數(shù)據(jù)的速度比訪問原始數(shù)據(jù)的速度要快得多,使用緩存數(shù)據(jù)可以減小服務(wù)器負(fù)載和帶寬消耗,從最終用戶的角度來看就是性能提高了。

圖1顯示了Internet如何工作的快速總攬,以及緩存在哪里發(fā)生作用。

 
圖 1 Internet上的緩存:這個圖顯示了常見的請求和檢索緩存信息的時機

緩存

正如你在圖1中所看到的,在服務(wù)器和客戶端上緩存數(shù)據(jù)既是可能的也是有效的,圖2顯示了這三個緩存位置的不同視圖。

 
圖 2 緩存配置:此圖顯示了三個典型的緩存位置

1、客戶端瀏覽器緩存:瀏覽器緩存Web對象后,可以對重復(fù)的請求直接響應(yīng),不用再從Internet請求數(shù)據(jù)了。

2、服務(wù)器端轉(zhuǎn)發(fā)代理緩存:雖然可能有些變化,但這些緩存位置通常是在最終用戶防火墻里面,可以對請求直接響應(yīng),不需要從原始來源請求數(shù)據(jù)。

3、服務(wù)器端反向代理緩存:也被稱為網(wǎng)關(guān)或代理緩存,這些緩存服務(wù)器的操作代表了客戶的來源服務(wù)器,術(shù)語“內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)”就是這些反向代理緩存的集合。

你可以緩存任何可能不止一次被請求的對象,但總有一個危險就是緩存的對象很可能變得陳舊,也就是說,沒有準(zhǔn)確地反應(yīng)原始數(shù)據(jù)。不過可以使用兩個參數(shù)來控制所有可緩存的對象:freshness和validation。freshness和validation都可以使用HTTP請求和相應(yīng)組合來進(jìn)行確定。

◆Freshness確定某個對象是否可以從緩存中獲得,使用expires和cache-control:max-age頭進(jìn)行控制。

◆Validation確定某個對象是否已經(jīng)陳舊,使用last-modified和if-modified-since頭進(jìn)行控制。

設(shè)計高度緩存的Web應(yīng)用程序

企業(yè)級Web應(yīng)用程序既有靜態(tài)部分又有動態(tài)部分,只要進(jìn)行了正確的設(shè)計和架構(gòu),都能夠?qū)崿F(xiàn)靜態(tài)部分從緩存中獲取,動態(tài)部分從原始服務(wù)器獲取,但第一步是確定要緩存什么,圖3提供了一個指南,可以幫助你確定哪些對象是可緩存,哪些對象是動態(tài)的(不可緩存的)。

 
圖 3 確定緩存能力:此圖提供了某個對象是否應(yīng)該緩存的指南

應(yīng)用程序架構(gòu)在可緩存對象和不可緩存對象之間有一點差異,開發(fā)人員應(yīng)該尋求最大限度的緩存命中率,同時要避免緩存動態(tài)對象。下面是一些最佳實踐:

1、使用緩存控制(cache-control:max-age)和有效期(Expires)頭

2、使用最后修改時間(last-modified)頭

3、檢查Web服務(wù)器是否支持If-Modified-Since

4、調(diào)查為小型站點使用轉(zhuǎn)向代理的可行性,或為大型企業(yè)網(wǎng)站從CDN廠家獲得專業(yè)人員的幫助

5、根據(jù)網(wǎng)站的可擴展性思考是使用數(shù)據(jù)中心還是托管

6、自己動手編碼常常需要大量的時間和精力,根據(jù)站點的規(guī)模,可以考慮采用開源緩存方法,如使用Squid作為代理服務(wù)器

7、為文件下載明確使用混合緩存機制

8、確保那些無用戶/輸入依賴的動態(tài)事務(wù)可以獲得緩存,為不同對象創(chuàng)建緩存映像可以幫助將可緩存對象和不可緩存對象隔離開來

9、小心完全忽略緩存頭的內(nèi)容管理系統(tǒng)(CMS)

#p#

為緩存使用頭(Header)

本節(jié)覆蓋了為緩存目的最有用的頭。

控制緩存

在HTTP 1.1規(guī)范中,服務(wù)器應(yīng)該為緩存控制頭發(fā)送一個無緩存響應(yīng),以指出內(nèi)容不應(yīng)該被緩存,客戶端和服務(wù)器端都應(yīng)該遵守這個頭信息,以防止頭中已經(jīng)聲明了的動態(tài)內(nèi)容,大多數(shù)開發(fā)語言都支持使用這個頭信息控制響應(yīng)頭值。

另一方面,你可以為cache-control頭返回一個public服務(wù)器端應(yīng)答來允許緩存(即使沒有cache-control頭也可以指出對象是可以緩存的),cache-control頭的值為private是一個特殊情況,表示瀏覽器可能會在本地緩存對象,但代理服務(wù)器不會緩存它。

圖4中的請求——響應(yīng)工作流顯示了Google如何通過cache-control頭通知代理服務(wù)器不要緩存的。

 
圖 4 停止代理服務(wù)器緩存:請求--應(yīng)答流顯示服務(wù)器返回private阻止代理服務(wù)器緩存

最后,服務(wù)器使用expires應(yīng)答時包括了一個表示有效期的日期/時間戳,直到有效期滿之前瀏覽器都可以緩存中的對象。如圖5所示。

 
圖 5 過期內(nèi)容:Google的Gmail服務(wù)器返回一個expires頭,包括緩存頁面的過期日期和時間

這一點你可以驗證,Gmail允許瀏覽器緩存Gmail主頁,直到expires頭中明確指定的時間到了為止。

使用Last-Modified 頭

瀏覽器使用這個頭信息來確定緩存對象生存期的有效性,瀏覽器請求這個對象時,服務(wù)器使用一個包含該對象最后修改時間的時間戳的Last-Modified 頭進(jìn)行響應(yīng),當(dāng)用戶下次請求相同的對象時,如果當(dāng)前的時間戳超出了對象的使用期限,或者用戶是通過刷新方式請求該頁面的,瀏覽器會向服務(wù)器發(fā)送一個if_modified_since請求確定對象是否發(fā)生了變化,如果對象的確發(fā)生了變化,瀏覽器就發(fā)送一個完整的GET請求以獲取新的對象并將其再次緩存起來,否則,瀏覽器就從它的緩存中提取對象,并更新對象的last-modified值。圖6顯示了一個工作實例。

 
圖 6 最后修改時間:last-modified時間戳讓瀏覽器確定是使用本地緩存內(nèi)容還是重新請求內(nèi)容

舉一個例子,假設(shè)瀏覽器在請求www.yahoo.com時,服務(wù)器使用last-modified時間戳進(jìn)行響應(yīng),和使用if-modified-since頭進(jìn)行響應(yīng)(參考圖7)時對比一下,看行為有何不同。

 
圖 7 檢查修改:通過發(fā)送if-modified-since頭,服務(wù)器將會使用一個表示自時間戳指定時間以來是否發(fā)生了變化的值進(jìn)行響應(yīng)

在圖7中,瀏覽器使用if-modified-since頭發(fā)送一個請求,服務(wù)器使用304代碼進(jìn)行響應(yīng),表示瀏覽器可以使用緩存,不用發(fā)起一個完整的GET請求。

為了全面理解這些頭信息的效果,最好的辦法是你自己動手實驗一翻,使用各種不同的頭信息組合,并觀察它們的行為,分析頭信息的一個好工具是Wfetch。

自己動手的方法

正如前面給出的建議,自己動手(DIY)的方法并不總是捷徑,專門提供CDN加速的產(chǎn)品和解決方案可以滿足不同類型的需求。但如果你要開發(fā)的是一個內(nèi)部使用的產(chǎn)品,可以提供幫助的可能只有Squid了,Squid被用作許多產(chǎn)品的一個組成部分,許多ISP也在使用它。例如,在Java應(yīng)用程序中,Squid可以被用作Tomcat服務(wù)器的代理,Squid提供的不僅僅是HTTP緩存,但關(guān)于它的完整介紹已經(jīng)超出了本文的范圍,請讀者自行搜索相關(guān)文章,可以在Wikimedia看到另一個使用Squid的例子。

HTTP壓縮

緩存僅僅是提高Web應(yīng)用程序性能的方法之一,壓縮是另一個關(guān)鍵方法,HTTP壓縮在內(nèi)容發(fā)送到客戶端之前將其壓縮,在客戶端和服務(wù)器端都有壓縮功能,當(dāng)服務(wù)器交付的是壓縮內(nèi)容時,由瀏覽器進(jìn)行解壓,這樣可以節(jié)約寶貴的帶寬,減少成本和提高響應(yīng)時間。

瀏覽器使用值為gzip的accept-encoding—typically頭宣稱它們支持壓縮,服務(wù)器使用content-encoding頭指定應(yīng)答數(shù)據(jù)的編碼,例如,如果使用的是gzip格式進(jìn)行壓縮,服務(wù)器應(yīng)該使用值為gzip的content-encoding 頭進(jìn)行響應(yīng)。

服務(wù)器檢查響應(yīng)的MIME類型,只壓縮那些通過壓縮可以獲得好處的類型,如文本文件、HTML和PDF文件,圖像格式如gif文件不會從壓縮技術(shù)獲得什么好處,因為gif本身已經(jīng)是壓縮格式了,視頻文件以及其它預(yù)壓縮的二進(jìn)制文件也不會從壓縮功能獲得好處。

注意:代理服務(wù)器應(yīng)該和來源服務(wù)器支持同類型的壓縮。

總體而言,結(jié)合緩存和壓縮功能可以提高Web應(yīng)用程序的性能,因此還提高了應(yīng)用程序的可擴展性。

原文:A Guide to Caching and Compression for High Performance Web Applications

作者:Puneet Sangal


網(wǎng)頁標(biāo)題:緩存設(shè)計詳解:低成本的高性能Web應(yīng)用解決方案
分享地址:http://m.5511xx.com/article/dpgjeip.html