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