首頁 > 移動互聯 > 使用 Varnish 優化移動端站點

使用 Varnish 優化移動端站點

2015-04-10 admin 移動互聯 0人評論 37468

使用 Varnish 優化移動端站點  移動互聯  第1張

文/公子肥馬輕裘

想象一下:你剛剛發布了一篇博文,并分享到了社交網絡。然后,這篇文章恰巧被大 V 看中再次分享了出去,立即吸引了數百粉絲的目光,引導他們涌入了你的網站。看到這么多的訪客量,以及它們的評論,你內心激動不已。突然之間,你的網站掛掉了,滿屏的數據連接錯誤……

或者假想另一種情景:你一直很努力地創業,某一天,一個大 V 在社交網絡表達了對貴公司的喜愛之情,字里行間滿滿的贊嘆。關注這個大 V 的粉絲心動了,又涌入了你的網站。不幸的是,點擊連接后卻無法進入你的網站,或者進入后無法注冊用戶,甚至頁面響應超時,無法獲取產品的序列號。盡管你在社交網絡上對此非常誠懇地表達了歉意,但粉絲們都不會再有興趣。

3分快3 這些假想其實非常普遍。在我的工作中,就經常發現,當網站信息在社交網站流傳開來的時候,移動設備的訪問請求就會驟增。這也表明,在社交網絡中,越來越多的人開始使用移動設備,而不是傳統的桌面應用。此外,大多數的移動用戶都在使用公共 Wi-Fi 以及其他低速網絡來訪問網站。所以,快速加載網站的任何優化措施,都會有利于用戶的訪問。

3分快3 在本文中,我會向你介紹 Varnish 網頁應用加速器(Varnish Web application accelerator)——這是一個免費、簡單的工具,有助于改善大規模突發性訪問狀態下的響應能力。

亮點

對于大多數的網站來說,眾多用戶請求訪問的核心內容大都是一致的——尤其是每天都會更新內容的門戶網站。不用多說你也會理解,圖片、CSS 和 JavaScript,這些靜態資源往往有較長的緩存周期期(譯者注:有利于在不同頁面間復用)。但你可能沒有深入思考過,通常在博客平臺或者是內容管理系統中,響應用戶的請求后,所返回的數據內容,大多也是相同的。

來自社交網絡的用戶進入一個博客后,并不會請求完全一致的信息。除了圖片、JavaScript 和 CSS,這些信息還包括 PHP 動態生成的內容,以及從數據庫查詢到的數據。訪問博客中的某一篇文章,所需要發送的每一條請求,不僅僅是在獲取網絡服務器提供的靜態資源,還需要使用 PHP 腳本,使用數據庫連接以及數據庫表單檢索等功能。

3分快3 數據庫連接的數量越多,Apache 需要處理的進程就會越多,而總的處理能力是有限的。相應的,訪客的數量越多,服務就會越不穩定,掙到的錢就會越少。

這就是類似 Varnish 的 HTTP 反向代理服務器發揮作用的地方。如此一來,從瀏覽器發出的請求,不再直接到達創建和維護網頁的服務器,而是到達 HTTP 緩存服務器。如果緩存服務器中存在所需頁面,那么直接從服務器的內存返回相應的資源,不再動用 Apache 服務器和數據庫。如果所需頁面不在緩存中,那么就像傳統方式一樣,使用 Apache 服務器來處理。Apche 處理完成之后,就會將這個頁面保存到 HTTP 緩存服務器中,等到下一次請求相同頁面時就可以直接返回了。

3分快3 將頁面保存在內存中,其響應速度遠快于將其保存在硬盤中。此外,當請求的頁面位于 HTTP 緩存服務器中時,就無需調用 PHP 或者數據庫來處理相關操作。這也讓 PHP 和 服務器能夠有更多的性能來處理更繁重的進程和連接。比如,上面提到的被大 V 稱贊的那家初創公司面臨的窘境,眾多粉絲點擊的鏈接其實只是網站中的少數幾個頁面——而這些完全可以保存在高速緩存服務器中,當需要時可以直接從內存響應請求。此時,準備注冊的用戶就會感到整個流程非常順利,因為后臺腳本和數據庫連接的處理能力非常寬裕,完全不受突發性請求的影響。

原理

3分快3 下面這個示意圖,展示了 Apache 服務器響應請求后生成站點內容的基本流程。在這個例子中,為了請求相同的頁面,一共從瀏覽器發送了五條指令給 Apache,而 Apache 對每條請求都做了詳細的處理。

使用 Varnish 優化移動端站點  移動互聯  第2張

是的,Apache 處理了每一條請求——圖像,CSS,JavaScript 和 HTML 文件。如果 PHP 中有某個文件,就會解析一次。如果需要請求數據庫的信息,那么就要執行一次數據連接,進行 SQL 查詢等操作。最終,在 Apache 返回給瀏覽器信息之前,數據庫返回相關信息組裝成完整的頁面。

如果我們在 Apache 之前使用 Varnish,就可以組成這樣的一個流程:

使用 Varnish 優化移動端站點  移動互聯  第3張

3分快3 如果瀏覽器請求的資源和頁面已經存在緩存中,那么 Varnish 就會直接從內存返回這些資源,而 Apache、PHP 和 MySql 完全不需要進行重復的操作。如果瀏覽器請求的數據不在緩存中,那么 Varnish 就會將相關的處理工作轉移給 Apache,讓 Apache 處理細節。這種流程的優勢就在于,只讓 Apache 處理必要的工作,一旦生成了所需的資源,該資源就會被保存到緩存服務器的內存中。當再次有請求訪問這些資源時,Varnish 就完全有能力應付了。

這個工具還有另一項好處。在 Varnish 的術語中,你所配置的 Apache 服務器,被稱為“處理后臺”。Varnish 允許配置多個處理后臺。所以,你可以同時運行兩個網絡服務器,比如,一臺使用 Apache 處理 PHP 頁面,一臺使用 nginx 處理靜態資源。在 Varnish 中設置成功后,就可以從正確的服務器獲取相應的資源。在本篇教程中,我們將著眼于一個簡單的示例。

標簽:

發表評論

◎歡迎參與討論,請在這里發表您的看法、交流您的觀點。

官方微信公眾號
70755559
09:00 - 22:00
QQ客服: 70755559
客服郵箱: 678128@qq.com
2分快3-推荐 1分快3-官网 好运快3-欢迎您 幸运快3-安全购彩 网投app-Welcome 分分快3app-Home 1分快三平台-3分快3 彩票代理-推荐 五福彩票-官网 彩票大赢家-欢迎您