想象一下,你剛剛發布了一篇博文,并分享到了社交網絡。然后,這篇文章恰巧被大V看中再次分享了出去,立即吸引了數百粉絲的目光,引導他們涌入了你的網站??吹竭@么多的訪客量,以及它們的評論,你內心激動不已。突然之間,你的網站就掛掉了,滿屏的數據連接錯誤……
或者假想另一種情境,你一直很努力地創業。突然有一天,一個大V在社交網絡表達了對貴公司的喜愛之情,字里行間滿滿的贊嘆。關注這個大V的粉絲心動了,又涌入了你的網站。不幸的是,點擊連接后卻無法進入你的網站,或者進入后無法注冊用戶,甚至頁面相應超時,無法獲取產品的序列號。盡管你在社交網絡上對此非常誠懇的表達了歉意,但眾多的瀏覽者都不會再有興趣。
這些假想其實非常普遍。在我的工作中,就經常發現,當網站信息在社交網站流傳開來的時候,移動設備的訪問請求就會驟增。這也表明,在社交網絡中,越來越多的人開始使用移動設備,而不是傳統的桌面應用。此外,大多數的移動用戶都在使用公共 Wi-Fi 以及其他低速網絡來訪問網站。所以,快速加載網站的任何優化措施,都會有利于用戶的訪問。
在本文中,我會向你介紹 Varnish 網頁應用加速器(Varnish Web application accelerator)——這是一個免費、簡單的工具,大大改善大規模突發性訪問狀態下的響應能力。
亮點
對于大多數的網站來說,眾多用戶請求訪問的核心內容大都是一致的——尤其是每天都會更新內容的門戶網站。不用多說你也會理解,圖片、CSS 和 JavaScript,這些靜態資源往往有較長的有效期(譯者注:有利于在不同頁面間復用)。但你可能沒有深入思考過,通常在博客平臺或者是內容管理系統中,響應用戶的請求后,所返回的數據內容,大多也是相同的。
來自社交網絡的用戶進入一個博客后,并不會請求完全一致的信息。除了圖片、JavaScript 和 CSS,這些信息還包括 PHP 動態生成的內容,以及從數據庫查詢到的數據。訪問博客中的某一篇博文,所需要發送的每一條請求,不僅僅是在獲取網絡服務器提供的靜態資源,還需要配合 PHP 腳本,使用數據庫連接以及數據庫表單檢索等功能。
數據庫連接的數量越多,Apache 需要處理的進程就會越多,而總的處理能力是由限度的。相應的,訪客的數量越多,服務就會越不穩定,掙到的錢就會越少。
這就是類似 Varnish 的 HTTP 緩存發揮作用的地方。如此一來,從瀏覽器發出的請求,不再直接到達創建和維護網頁的服務器,而是到達 HTTP 緩存服務器。如果緩存服務器中存在所需頁面,那么直接從服務器的內存返回相應的資源,不再動用 Apache 服務器和數據庫。如果所需頁面不再緩存中,那么就像傳統方式一樣,使用 Apache 服務器來處理。Apche 處理完成之后,就會將這個頁面保存到 HTTP 緩存服務器中,等到下一次請求相同頁面時就可以直接返回了。
新聞熱點
疑難解答