文章目錄
- 什麼是Web緩衝
- Web緩衝的作用
- Web緩衝的類型
====索引=====
【Web緩衝機制概述】1 – Web緩衝的作用與類型
【Web緩衝機制概述】2 – Web瀏覽器的緩衝機制
【Web緩衝機制概述】3 – 如何構建可緩衝網站
【Web緩衝機制概述】4 – HTML5時代的Web緩衝機制
【Web緩衝機制概述】5 – Web App時代的緩衝機制新思路
============
前言&摘要
這段時間的工作內容主要是為一個用戶端類型的產品增加文檔線上儲存和文檔線上預覽相關特性。由於測試的同事比較細心和專業,發現了項目實現中一些效率低下的環節,比如線上預覽圖片沒有經過壓縮、重開開啟同一張圖片沒有有效利用Web緩衝等問題。而這些細節問題往往在做項目架構時,容易因為時間緊張等等因素而被忽略。雖然以前也有一些關於Web緩衝的意識,但並沒有很系統的瞭解、總結,並在項目中進行合理的運用。藉此機會,整理了一些相關資料和項目的實際應用實踐,做個備忘,便於在日後的專案查詢和應用。
本文從Web緩衝的定義、作用、分類、工作機制等方面介紹了目前常用的Web緩衝及其原理,並給出如何構建有效利用Web緩衝的網站。最後探討了在HTML5和Web App、Web Game逐漸盛行的今天,現代瀏覽器給我們提供哪些有利於Web緩衝、提高訪問效率的機制,前端的代碼架構又能從哪些方面進行調整,更好的利用Web緩衝等問題。
什麼是Web緩衝
Web緩衝是指一個Web資源(如html頁面,圖片,js,資料等)存在於Web伺服器和用戶端(瀏覽器)之間的副本。緩衝會根據進來的請求儲存輸出內容的副本;當下一個請求來到的時候,如果是相同的URL,緩衝會根據緩衝機制決定是直接使用副本響應訪問請求,還是向原始伺服器再次發送請求。比較常見的就是瀏覽器會緩衝訪問過網站的網頁,當再次訪問這個URL地址的時候,如果網頁沒有更新,就不會再次下載網頁,而是直接使用本機快取的網頁。只有當網站明確標識資源已經更新,瀏覽器才會再次下載網頁。至於瀏覽器和網站伺服器是如何標識網站頁面是否更新的機制,將在後面介紹。
Web緩衝的作用
使用Web緩衝的作用其實是非常顯而易見的:
減少網路頻寬消耗
無論對於網站運營者或者使用者,頻寬都代表著金錢,過多的頻寬消耗,只會便宜了網路電訊廠商。當Web快取複本被使用時,只會產生極小的網路流量,可以有效降低運營成本。
降低伺服器壓力
給網路資源設定有效期間之後,使用者可以重複使用本地的緩衝,減少對原始伺服器的請求,間接降低伺服器的壓力。同時,搜尋引擎的爬蟲機器人也能根據到期機制降低爬取的頻率,也能有效降低伺服器的壓力。
減少網路延遲,加快頁面開啟速度
頻寬對於個人網站運營者來說是十分重要,而對於大型的互連網公司來說,可能有時因為錢多而真的不在乎。那Web緩衝還有作用嗎?答案是肯定的,對於終端使用者,緩衝的使用能夠明顯加快頁面開啟速度,達到更好的體驗。
Web緩衝的類型
在Web應用領域,Web緩衝大致可以分為以下幾種類型:
資料庫資料緩衝
Web應用,特別是SNS類型的應用,往往關係比較複雜,資料庫表繁多,如果頻繁進行資料庫查詢,很容易導致資料庫不堪重荷。為了提供查詢的效能,會將查詢後的資料放到記憶體中進行緩衝,下次查詢時,直接從記憶體緩衝直接返回,提供響應效率。比如常用的緩衝方案有memcached等。
瀏覽器端緩衝
瀏覽器緩衝根據一套與伺服器約定的規則進行工作,在同一個會話過程中會檢查一次並確定緩衝的副本足夠新。如果你瀏覽過程中,比如前進或後退,訪問到同一個圖片,這些圖片可以從瀏覽器緩衝中調出而即時顯現。
伺服器端緩衝 Proxy 伺服器緩衝
Proxy 伺服器是瀏覽器和原始伺服器之間的中間伺服器,瀏覽器先向這個中間伺服器發起Web請求,經過處理後(比如許可權驗證,緩衝匹配等),再將請求轉寄到原始伺服器。Proxy 伺服器緩衝的運作原理跟瀏覽器的運作原理差不多,只是規模更大。可以把它理解為一個共用快取,不只為一個使用者服務,一般為大量使用者提供服務,因此在減少相應時間和頻寬使用方面很有效,同一個副本會被重用多次。常見Proxy 伺服器緩衝解決方案有Squid等,這裡不再詳述。
CDN緩衝
CDN(Content delivery networks)緩衝,也叫網關緩衝、反向 Proxy緩衝。CDN緩衝一般是由網站管理員自己部署,為了讓他們的網站更容易擴充並獲得更好的效能。瀏覽器先向CDN網關發起Web請求,閘道伺服器後面對應著一台或多台負載平衡原始伺服器,會根據它們的負載請求,動態將請求轉寄到合適的原始伺服器上。雖然這種架構負載平衡原始伺服器之間的緩衝沒法共用,但卻擁有更好的處擴充性。從瀏覽器角度來看,整個CDN就是一個原始伺服器,從這個層面來說,本文討論瀏覽器和伺服器之間的緩衝機制,在這種架構下同樣適用。
Web應用程式層緩衝
應用程式層緩衝指的是從代碼層面上,通過代碼邏輯和緩衝策略,實現對資料,頁面,圖片等資源的緩衝,可以根據實際情況選擇將資料存在檔案系統或者記憶體中,減少資料庫查詢或者讀寫瓶頸,提高響應效率。
後續將從Web前端的角度討論瀏覽器緩衝機制、前端應用程式層緩衝。
原貼地址:http://www.alloyteam.com/2012/03/web-cache-1-web-cache-overview/