摘要:導(dǎo)言本文將列舉站點常用緩存技術(shù)的基本概念與特點,為想要了解緩存技術(shù)的讀者們提供提綱式的技術(shù)介紹。這些指令指定用于阻止緩存對請求或響應(yīng)造成不利干擾的行為。參考連接網(wǎng)站緩存技術(shù)總結(jié)高性能網(wǎng)站的關(guān)鍵緩存靜態(tài)資源緩存
導(dǎo)言:本文將列舉web站點常用緩存技術(shù)的基本概念與特點,為想要了解web緩存技術(shù)的讀者們提供提綱式的技術(shù)介紹。
在互聯(lián)網(wǎng)迅速發(fā)展的今天,一個互聯(lián)網(wǎng)站點的請求量是十分驚人的,動輒上萬的每秒請求數(shù)不僅會讓服務(wù)器處于高負荷的環(huán)境中,對于數(shù)據(jù)庫來說更是苦不堪言。而網(wǎng)頁以及數(shù)據(jù)的讀取速度的快慢,又會影響到產(chǎn)品的用戶體驗,靈活使用各種緩存技術(shù)對于提高服務(wù)器的可用性以及用戶體驗是至關(guān)重要的一環(huán)。
1. 使用緩存的作用存儲頻繁訪問的數(shù)據(jù)
內(nèi)存緩存減少磁盤I/O
保存耗時的操作,以便下次使用
2. 網(wǎng)站緩存的分類網(wǎng)站緩存按照存放的地點不同,可以分為服務(wù)端緩存和客戶端緩存。
服務(wù)端緩存
頁面緩存
數(shù)據(jù)緩存
數(shù)據(jù)庫緩存
客戶端緩存
瀏覽器緩存
代理服務(wù)器緩存
網(wǎng)關(guān)緩存
3. 服務(wù)端緩存如果一個web服務(wù)是計算密集型的,服務(wù)器內(nèi)存或者CPU等性能不好,或者像web系統(tǒng)使用的是與他人共享的虛擬服務(wù)器,只能得到部分內(nèi)存和CPU的時候,服務(wù)器的計算時間可能占整個頁面響應(yīng)時間的很大一部分。這種情況下,優(yōu)化服務(wù)器端的緩存是一件非常重要的事情。
3.1 網(wǎng)頁緩存頁面緩存是將動態(tài)頁面直接生成靜態(tài)的頁面放在服務(wù)器端,用戶調(diào)取相同頁面時,靜態(tài)頁面將直接下載到客戶端,不再需要通過程序的運行和數(shù)據(jù)庫的訪問,大大節(jié)約了服務(wù)器的負載。
早期的網(wǎng)站很多使用發(fā)布系統(tǒng)來完成這個功能,在后臺發(fā)布時將數(shù)據(jù)和頁面模板整合成靜態(tài)頁面,存放在硬盤中。但這樣的缺陷很明顯,一是后臺的程序的編寫很復(fù)雜,二是緩存的控制只能通過人為的方式來控制,這對一些更新十分頻繁的網(wǎng)站就是一個噩夢,網(wǎng)站可能在不停的做緩存的刪除和重建。當(dāng)然后來出現(xiàn)了一些自動更新這些緩存的框架,比如PHP的Smarty模板,可以定義緩存過期的時間,自動去更新這些緩存。這對一些信息發(fā)布類網(wǎng)站已經(jīng)確實適用了。
除了整個頁面的緩存技術(shù),還有一種技術(shù)叫做“頁面片段緩存”,將頁面的部分而不是全部進行緩存。代表作有ESI Cache。
3.2 數(shù)據(jù)緩存將從數(shù)據(jù)庫查詢的結(jié)果或是需要多服務(wù)器共享的數(shù)據(jù)緩存到內(nèi)存或者文件中,以便再次訪問同一資源時無需再次對數(shù)據(jù)庫進行訪問,提高請求數(shù)據(jù)的響應(yīng)速度以及降低數(shù)據(jù)庫的負載。
目前緩存的做法分為兩種模式:
內(nèi)存緩存:緩存數(shù)據(jù)存放在服務(wù)器的內(nèi)存空間中,現(xiàn)在常用的內(nèi)存緩存有Redis以及Memcached。
優(yōu)點:速度快
缺點:資源有限
文件緩存:緩存數(shù)據(jù)存放在服務(wù)器的硬盤空間中。
優(yōu)點:容量大
缺點:速度偏慢,尤其在緩存數(shù)量巨大時
3.3 數(shù)據(jù)庫緩存數(shù)據(jù)庫的緩存一般由數(shù)據(jù)庫提供,比如Oracle,可以對表建立高速緩存,提高對經(jīng)常訪問的數(shù)據(jù)的訪問速度。對于查詢操作遠遠多于修改操作的數(shù)據(jù)庫,開啟數(shù)據(jù)庫查詢緩存是很有益的;但是對于修改操作很多的數(shù)據(jù)庫,由于緩存經(jīng)常失效,就起不到加速的效果。
4. 客戶端緩存客戶端緩存,就是把緩存保存在除Web服務(wù)器之外的其他地方,加速同一客戶端訪問相同資源時的速度。
4.1 瀏覽器緩存當(dāng)瀏覽器訪問一個站點的時候,網(wǎng)絡(luò)連接是主要瓶頸,可以通過設(shè)置瀏覽器緩存來避免發(fā)起請求,或者僅進行極低流量的HTTP請求。設(shè)置瀏覽器緩存,通常有兩個主要作用:
對用戶來說,減少請求可以更快地加載頁面,節(jié)省流量。
對網(wǎng)站來說,減少帶寬壓力和費用。
服務(wù)器通過設(shè)置請求返回的HTTP頭,來通知瀏覽器按照服務(wù)器的要求進行響應(yīng)的緩存。主要使用的HTTP頭如下:
Expires: 過期時間。這種緩存是最快的,因為沒有任何HTTP請求的發(fā)生。當(dāng)用戶需要這個資源的時候,瀏覽器就直接從緩存(在硬盤中)讀取,不再需要詢問服務(wù)器端的意見。
Last-Modified: 最后修改時間。通過這種緩存方式,無論資源是否發(fā)生了更新,仍然至少會發(fā)生一來一去HTTPS頭的傳輸和接收,所以速度比不上Expires。
ETag: 實體標簽。和Last-Modified類似,也是WEB服務(wù)器和客戶端用于確認緩存組件的有效性的一種機制。當(dāng)資源被修改,其ETag也發(fā)生改變。ETag相對Last- Modified更精確,但在多服務(wù)器可能造成混亂。
Cache-Control: 緩存控制。這個字段用于指定所有緩存機制在整個請求/響應(yīng)鏈中必須服從的指令。這些指令指定用于阻止緩存對請求或響應(yīng)造成不利干擾的行為。比如:Cache-Control: max-age=3600, public
4.2 代理服務(wù)器緩存代理服務(wù)器是一種處在客戶端和服務(wù)端中間的服務(wù)器,而代理服務(wù)器緩存以共享緩存的方式保存著報文副本,可以減少客戶端到原始服務(wù)器的長距離請求。由于代理服務(wù)器緩存是一種共享緩存;往往有大量的訪問者使用,每個副本被大量重用,因此,其在降低延時和網(wǎng)絡(luò)流量上很有用。
4.3 網(wǎng)關(guān)緩存網(wǎng)關(guān)緩存也被稱為“反向代理緩存”或“替代緩存”,存與上述代理服務(wù)器緩存大體類似,同樣起著中介的作用。網(wǎng)關(guān)緩存一般是網(wǎng)站管理員自己部署,讓他們的網(wǎng)站更容易擴展并獲得更好的性能。
5. 總結(jié)本文簡單的列舉了Web站點常用的緩存技術(shù)的分類以及簡要的說明,對于不同的生產(chǎn)環(huán)境,往往會采取多樣的緩存方案,提高整站的可用性以及用戶體驗。只有對各個緩存技術(shù)都有更深入的認識,才能設(shè)計出一套更優(yōu)秀的緩存方案。
參考連接
1. 網(wǎng)站緩存技術(shù)總結(jié)( ehcache memcache redis): http://2277259257.iteye.com/b...
2. 高性能網(wǎng)站的關(guān)鍵-緩存: https://www.cloudxns.net/Supp...
3. HTTP靜態(tài)資源緩存: http://www.cnblogs.com/ivanfu...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/61848.html
摘要:二目的是一個經(jīng)策略性部署的整體系統(tǒng),從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小用戶訪問量大網(wǎng)點分布不均而產(chǎn)生的用戶訪問網(wǎng)站響應(yīng)速度慢的根本原因。 一、CDN全稱:??Content Delivery Network或Content Ddistribute Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。 ??二、目的:??CDN是一個經(jīng)策略性部署的整體系統(tǒng),從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)點分布不...
摘要:目前,我們看到的老蔣采用的部署的環(huán)境,在鏡像中配置,于是我們會稱作為。有沒有一件傻瓜式安裝工具腳本呢這里老蔣要推薦的來自國內(nèi)比較老牌且一直更新維護的一鍵安裝包,我們可以較為直觀且無人值守的安裝需要的網(wǎng)站服務(wù)器環(huán)境。如今我們建站較多的還是會選擇VPS云服務(wù)器,很少會去選擇虛擬主機,固然前者有很多的優(yōu)點。不過相比虛擬主機不同的是,VPS云服務(wù)器需要我們自己配置WEB環(huán)境,而且我們較多的還是會選擇...
摘要:緩存緩存,也叫網(wǎng)關(guān)緩存反向代理緩存。瀏覽器先向網(wǎng)關(guān)發(fā)起請求,網(wǎng)關(guān)服務(wù)器后面對應(yīng)著一臺或多臺負載均衡源服務(wù)器,會根據(jù)它們的負載請求,動態(tài)將請求轉(zhuǎn)發(fā)到合適的源服務(wù)器上。雖然這種架構(gòu)負載均衡源服務(wù)器之間的緩存沒法共享,但卻擁有更好的處擴展性。 一、前言? 工作上遇到一個這樣的需求,一個H5頁面在APP端,如果勾選已讀狀態(tài),則下次打開該鏈接,會跳過此頁面。用到了HTML5 的本地存儲 API ...
摘要:因為路由層面受業(yè)務(wù)影響很大,經(jīng)常修改一些功能的行為,所以后來大部分測試都是針對層面的單元測試。在我了解的過程中,我發(fā)現(xiàn)中文網(wǎng)絡(luò)上對的討論非常分散,于是我創(chuàng)建了中文社區(qū),到年末已經(jīng)有個注冊用戶和個帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發(fā)的一個互聯(lián)網(wǎng)金融項目終于在今年三月份上線了,這是一個 Node...
摘要:因為路由層面受業(yè)務(wù)影響很大,經(jīng)常修改一些功能的行為,所以后來大部分測試都是針對層面的單元測試。在我了解的過程中,我發(fā)現(xiàn)中文網(wǎng)絡(luò)上對的討論非常分散,于是我創(chuàng)建了中文社區(qū),到年末已經(jīng)有個注冊用戶和個帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發(fā)的一個互聯(lián)網(wǎng)金融項目終于在今年三月份上線了,這是一個 Node...
閱讀 3450·2019-08-30 15:55
閱讀 2050·2019-08-30 15:44
閱讀 1453·2019-08-30 12:47
閱讀 741·2019-08-30 11:05
閱讀 1629·2019-08-30 10:54
閱讀 655·2019-08-29 16:07
閱讀 3568·2019-08-29 14:17
閱讀 2223·2019-08-23 18:31