国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識(shí)|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識(shí) - 在Apache服務(wù)器上利用Varnish優(yōu)化移動(dòng)端訪問(wèn)的方法

在Apache服務(wù)器上利用Varnish優(yōu)化移動(dòng)端訪問(wèn)的方法

2021-10-26 15:56Rachel Andrew 服務(wù)器知識(shí)

這篇文章主要介紹了在Apach服務(wù)器上利用Varnish優(yōu)化移動(dòng)端訪問(wèn)的方法,包括清除緩存等常用操作的介紹,需要的朋友可以參考下

想象一下,你剛剛發(fā)布了一篇博文,并分享到了社交網(wǎng)絡(luò)。然后,這篇文章恰巧被大V看中再次分享了出去,立即吸引了數(shù)百粉絲的目光,引導(dǎo)他們涌入了你的網(wǎng)站。看到這么多的訪客量,以及它們的評(píng)論,你內(nèi)心激動(dòng)不已。突然之間,你的網(wǎng)站就掛掉了,滿屏的數(shù)據(jù)連接錯(cuò)誤……

或者假想另一種情境,你一直很努力地創(chuàng)業(yè)。突然有一天,一個(gè)大V在社交網(wǎng)絡(luò)表達(dá)了對(duì)貴公司的喜愛之情,字里行間滿滿的贊嘆。關(guān)注這個(gè)大V的粉絲心動(dòng)了,又涌入了你的網(wǎng)站。不幸的是,點(diǎn)擊連接后卻無(wú)法進(jìn)入你的網(wǎng)站,或者進(jìn)入后無(wú)法注冊(cè)用戶,甚至頁(yè)面相應(yīng)超時(shí),無(wú)法獲取產(chǎn)品的序列號(hào)。盡管你在社交網(wǎng)絡(luò)上對(duì)此非常誠(chéng)懇的表達(dá)了歉意,但眾多的瀏覽者都不會(huì)再有興趣。

這些假想其實(shí)非常普遍。在我的工作中,就經(jīng)常發(fā)現(xiàn),當(dāng)網(wǎng)站信息在社交網(wǎng)站流傳開來(lái)的時(shí)候,移動(dòng)設(shè)備的訪問(wèn)請(qǐng)求就會(huì)驟增。這也表明,在社交網(wǎng)絡(luò)中,越來(lái)越多的人開始使用移動(dòng)設(shè)備,而不是傳統(tǒng)的桌面應(yīng)用。此外,大多數(shù)的移動(dòng)用戶都在使用公共 Wi-Fi 以及其他低速網(wǎng)絡(luò)來(lái)訪問(wèn)網(wǎng)站。所以,快速加載網(wǎng)站的任何優(yōu)化措施,都會(huì)有利于用戶的訪問(wèn)。

在本文中,我會(huì)向你介紹 Varnish 網(wǎng)頁(yè)應(yīng)用加速器(Varnish Web application accelerator)——這是一個(gè)免費(fèi)、簡(jiǎn)單的工具,大大改善大規(guī)模突發(fā)性訪問(wèn)狀態(tài)下的響應(yīng)能力。
亮點(diǎn)

對(duì)于大多數(shù)的網(wǎng)站來(lái)說(shuō),眾多用戶請(qǐng)求訪問(wèn)的核心內(nèi)容大都是一致的——尤其是每天都會(huì)更新內(nèi)容的門戶網(wǎng)站。不用多說(shuō)你也會(huì)理解,圖片、CSS 和 JavaScript,這些靜態(tài)資源往往有較長(zhǎng)的有效期(譯者注:有利于在不同頁(yè)面間復(fù)用)。但你可能沒有深入思考過(guò),通常在博客平臺(tái)或者是內(nèi)容管理系統(tǒng)中,響應(yīng)用戶的請(qǐng)求后,所返回的數(shù)據(jù)內(nèi)容,大多也是相同的。

來(lái)自社交網(wǎng)絡(luò)的用戶進(jìn)入一個(gè)博客后,并不會(huì)請(qǐng)求完全一致的信息。除了圖片、JavaScript 和 CSS,這些信息還包括 PHP 動(dòng)態(tài)生成的內(nèi)容,以及從數(shù)據(jù)庫(kù)查詢到的數(shù)據(jù)。訪問(wèn)博客中的某一篇博文,所需要發(fā)送的每一條請(qǐng)求,不僅僅是在獲取網(wǎng)絡(luò)服務(wù)器提供的靜態(tài)資源,還需要配合 PHP 腳本,使用數(shù)據(jù)庫(kù)連接以及數(shù)據(jù)庫(kù)表單檢索等功能。

數(shù)據(jù)庫(kù)連接的數(shù)量越多,Apache 需要處理的進(jìn)程就會(huì)越多,而總的處理能力是由限度的。相應(yīng)的,訪客的數(shù)量越多,服務(wù)就會(huì)越不穩(wěn)定,掙到的錢就會(huì)越少。

這就是類似 Varnish 的 HTTP 緩存發(fā)揮作用的地方。如此一來(lái),從瀏覽器發(fā)出的請(qǐng)求,不再直接到達(dá)創(chuàng)建和維護(hù)網(wǎng)頁(yè)的服務(wù)器,而是到達(dá) HTTP 緩存服務(wù)器。如果緩存服務(wù)器中存在所需頁(yè)面,那么直接從服務(wù)器的內(nèi)存返回相應(yīng)的資源,不再動(dòng)用 Apache 服務(wù)器和數(shù)據(jù)庫(kù)。如果所需頁(yè)面不再緩存中,那么就像傳統(tǒng)方式一樣,使用 Apache 服務(wù)器來(lái)處理。Apche 處理完成之后,就會(huì)將這個(gè)頁(yè)面保存到 HTTP 緩存服務(wù)器中,等到下一次請(qǐng)求相同頁(yè)面時(shí)就可以直接返回了。

將頁(yè)面保存在內(nèi)存中,其響應(yīng)速度遠(yuǎn)快于將其保存在硬盤中。此外,當(dāng)請(qǐng)求的頁(yè)面為于 HTTP 緩存服務(wù)器中時(shí),就無(wú)需動(dòng)用 PHP 或者數(shù)據(jù)庫(kù)來(lái)處理相關(guān)操作。這也讓 PHP 和 服務(wù)器能夠有更多的性能來(lái)處理更繁重的進(jìn)程和連接。比如,上面提到的被大 V 稱贊的那家初創(chuàng)公司面臨的情境,眾多粉絲點(diǎn)擊的鏈接其實(shí)只是網(wǎng)站中的少數(shù)幾個(gè)頁(yè)面——而這些完全可以保存在高速緩存服務(wù)器中,當(dāng)需要時(shí)直接從內(nèi)存響應(yīng)請(qǐng)求。此時(shí),準(zhǔn)備注冊(cè)的用戶就會(huì)感到整個(gè)流程非常順利,因?yàn)楹笈_(tái)腳本和數(shù)據(jù)庫(kù)連接的處理能力非常寬裕,完全不受突發(fā)性請(qǐng)求的影響。
原理

下面這個(gè)示意圖,展示了 Apache 服務(wù)器響應(yīng)請(qǐng)求后生成站點(diǎn)內(nèi)容的基本流程。在這個(gè)例子中,為了請(qǐng)求相同的頁(yè)面,一共從瀏覽器發(fā)送了五條指令給 Apache,而 Apache 很呆板的對(duì)每條請(qǐng)求都做了詳細(xì)的處理。

在Apache服務(wù)器上利用Varnish優(yōu)化移動(dòng)端訪問(wèn)的方法

是的,Apache 處理了每一條請(qǐng)求——圖像,CSS,JavaScript 和 HTML 文件。如果 PHP 中有某個(gè)文件,就會(huì)解析一次。如果需要請(qǐng)求數(shù)據(jù)庫(kù)的信息,那么就要執(zhí)行一次數(shù)據(jù)連接,進(jìn)行 SQL 查詢等操作。最終,在 Apache 返回給瀏覽器信息之前,數(shù)據(jù)庫(kù)返回相關(guān)信息組裝成完成的頁(yè)面。

如果我們?cè)?Apache 之間使用 Varnish,我們就可以形成這樣的一個(gè)流程:

在Apache服務(wù)器上利用Varnish優(yōu)化移動(dòng)端訪問(wèn)的方法

如果瀏覽器請(qǐng)求的資源和頁(yè)面已經(jīng)存在緩存中,那么 Varnish 就會(huì)直接從內(nèi)存返回這些資源,而 Apache、PHP 和 MySql 完全不需要進(jìn)行重復(fù)的操作。如果瀏覽器請(qǐng)求的數(shù)據(jù)不再緩存中,那么 Varnish 就會(huì)將相關(guān)的處理工作轉(zhuǎn)移給 Apache,讓 Apache 處理相關(guān)的細(xì)節(jié)。這種方式的優(yōu)勢(shì)就在于,只讓 Apache 處理必要的工作,一旦生成了所需的資源,該資源就會(huì)被保存到緩存服務(wù)器的內(nèi)存中。當(dāng)再次有請(qǐng)求訪問(wèn)這些資源時(shí),Varnish 就完全有能力應(yīng)付了。

這個(gè)工具還有另一項(xiàng)好處。在 Varnish 的屬于中,你所配置的 Apache 服務(wù)器,被稱為“處理后臺(tái)”。Varnish 允許配置多個(gè)處理后臺(tái)。所以,你可以同時(shí)運(yùn)行兩個(gè)網(wǎng)絡(luò)服務(wù)器,比如,一臺(tái)使用 Apache 處理 PHP 頁(yè)面,一臺(tái)使用 nginx 處理靜態(tài)資源。在 Varnish 中設(shè)置成功后,就可以從正確的服務(wù)器獲取相應(yīng)的資源。在本篇教程中,我們將著眼于一個(gè)簡(jiǎn)單的示例。
震驚!快教我吧

安裝和配置 Varnish 相當(dāng)簡(jiǎn)單。你需要獲得服務(wù)器的 root 權(quán)限(sudo),才能安裝 Varnish。因此,你的網(wǎng)站需要托管在類似 VPS 的服務(wù)器上。現(xiàn)在 VPS 的價(jià)格也不是那么昂貴了,而且使用 Varnish 也會(huì)影響大家選擇 VPS 而不是共享服務(wù)器。

有些 CMS 擁有的插件,可以直接使用 Varnish,或者將其整合進(jìn)控制面板——通常可以更輕松地清空緩存。當(dāng)然,你可以將 Varnish 融入任何的 CMS 或者靜態(tài)網(wǎng)站中,而不需要特殊的配置。

在演示安裝 Varnish 的整個(gè)流程之前,我會(huì)假設(shè)你已經(jīng)在系統(tǒng)中使用 Apache 作為服務(wù)器了。雖然我在使用 Debian Linux,但安裝過(guò)程中用到的軟件包對(duì)其他分發(fā)版本也是適用的(只是系統(tǒng)中的文件路徑會(huì)有所不同)。

在開始之前,先檢查一下網(wǎng)站是否正常運(yùn)行在 Apache 上。如果你使用的服務(wù)器是個(gè)新品,或者你想在本地虛擬機(jī)上嘗試 Varnish,那么請(qǐng)確保配置一個(gè)虛擬主機(jī),并可以用瀏覽器打開這個(gè)服務(wù)器的測(cè)試頁(yè)面。
安裝 Varnish

各個(gè)平臺(tái)的詳細(xì)安裝說(shuō)明請(qǐng)參考 Varnish 官方文檔。因?yàn)槲沂褂玫氖?Debian Wheezy,所以我會(huì)遵循 Debian 部分的說(shuō)明。一旦 Varnish 安裝完成,終端中就會(huì)輸出下面這段話,提示你安裝成功了:

   

復(fù)制代碼 代碼如下:
[ ok ] Starting HTTP accelerator: varnishd.

 

Apache 默認(rèn)監(jiān)聽來(lái)自 80 端口的請(qǐng)求。這個(gè)端口接收請(qǐng)求,所以為了配合 Varnish 置于 Apache 之前的布局,需要修改端口,讓 Varnish 監(jiān)聽 80 端口,同時(shí)將 Apache 的端口修改為一個(gè)與之不同的值——一般來(lái)說(shuō)是 8080。然后在 Varnish 中配置相關(guān)信息,讓 Varnish 連通 Apache。
重新配置 Apache

為了修改 Apache 當(dāng)前的監(jiān)聽端口,需要使用 root 權(quán)限打開 /etc/apache2/ports.conf 文件,找到下面這兩行:

   

復(fù)制代碼 代碼如下:
NameVirtualHost *:80
    Listen 80

 

修改為:

   

復(fù)制代碼 代碼如下:
NameVirtualHost *:8080
    Listen 8080

 

如果看到了下面這兩行,只需要修改 80 為 8080 即可:

   

復(fù)制代碼 代碼如下:
NameVirtualHost 127.0.0.1:80
    Listen 80

 

然后保存該文件并打開默認(rèn)的虛擬主機(jī)文件,該文件應(yīng)該在 /etc/apache2/sites-available。在這個(gè)文件中,找到下面這一行:

   

復(fù)制代碼 代碼如下:
<VirtualHost *:80>

 

修改為:

   

復(fù)制代碼 代碼如下:
<VirtualHost *:8080>

 

當(dāng)然,你也需要修改其他用到的虛擬主機(jī)。
配置 Varnish

打開 /etc/default/varnish 文件,將頁(yè)面滾動(dòng)到?jīng)]有注釋、以 DAEMON_OPTS 開頭的部分。將這一部分編輯如下,使 Varnish 監(jiān)聽 80 端口:

   

復(fù)制代碼 代碼如下:
DAEMON_OPTS="-a :80
    -T localhost:1234
    -f /etc/varnish/default.vcl
    -S /etc/varnish/secret
    -s malloc,256m"

 

打開 /etc/varnish/default.vcl 文件,檢查默認(rèn)的后臺(tái)端口并設(shè)置為 8080,用來(lái)連通 Apache :

   

復(fù)制代碼 代碼如下:
backend default {
      .host = "127.0.0.1";
      .port = "8080";
    }

 

在 root 權(quán)限下,使用如下命令重啟 Apache 和 Varnish:

   

復(fù)制代碼 代碼如下:
service apache2 restart
    service varnish restart

 

檢查先前的測(cè)試頁(yè)面是否仍然可以連接。如果可以,那么你可能想知道如何測(cè)試網(wǎng)站是否已經(jīng)被緩存到了 Varnish 上。事實(shí)上有好幾種方式,最簡(jiǎn)單的是使用 cURL。請(qǐng)?jiān)诿钚兄休斎胍韵旅睿?/p>

   

復(fù)制代碼 代碼如下:
curl http://yoursite.com --head

 

此時(shí)獲得響應(yīng)應(yīng)該類似于 Via: 1.1 varnish。

你也可以查看由 Varnish 生成的靜態(tài)資源。在終端中,輸入 varnishstat,然后在瀏覽器中刷新頁(yè)面,就會(huì)看到點(diǎn)擊率逐漸增加。如果是由 Varnish 提供的資源,那么會(huì)標(biāo)識(shí)為 hit;如果由 Apache 或其他后臺(tái)提供,標(biāo)識(shí)為 miss。

另一個(gè)有用的工具是 varnish-top。首先在命令行中輸入 varnishtop -i txurl,然后在瀏覽器中刷新頁(yè)面。這個(gè)工具將會(huì)顯示哪些頁(yè)面是由 Varnish 提供的。
清除緩存

當(dāng)頁(yè)面被緩存之后,當(dāng)你改動(dòng) HTML 或者 CSS 文件,并不會(huì)立即看到更新的部分。這經(jīng)常讓我出差錯(cuò)。雖然我知道在 Apache 之前有個(gè)緩存服務(wù)器,但還是經(jīng)常會(huì)犯傻“剛剛我的修改哪去了?”在命令行輸入 varnishadm "ban.url ." 即可清除全部的緩存。

你也可以通過(guò) HTTP 控制 Varnish。這方面有很多插件,比如服務(wù)于 WordPress 的 Varnish HTTP Purge,可以直接通過(guò)管理界面清除緩存。
自定義

也許,你會(huì)想通過(guò)了解一些 Varnish 的工作原理來(lái)微調(diào)它的配置。如果按照上述步驟配置 Varnish,一旦靜態(tài)資源和頁(yè)面被緩存到內(nèi)存中,會(huì)逐漸積累起大量的靜態(tài)資源和頁(yè)面。

Varnish 只會(huì)緩存那些不會(huì)影響安全的資源,也因此有時(shí)不會(huì)緩存一些你認(rèn)為會(huì)被緩存的資源,比如,cookies。

在默認(rèn)配置中,如果設(shè)置了 cookie,那么 Varnish 就不會(huì)緩存相應(yīng)的內(nèi)容。所以,如果你的站點(diǎn)為不同用戶提供不同的內(nèi)容,比如個(gè)人資料,那么你肯定不會(huì)為了一個(gè)用戶緩存所有人的資料。不過(guò),有時(shí)你又會(huì)希望忽略一些 cookies,比如為了某些分析工作。如果網(wǎng)站并不提供任何個(gè)人資料,那么唯一需要考慮 cookies 的地方就是后臺(tái)管理部分——如果 Varnish 緩存了后臺(tái)管理的部分,那么查看修改就會(huì)非常不方便。

讓我們修改一下 /etc/varnish/default.vcl 文件。假設(shè)你的后臺(tái)管理部分在 /admin,那么你需要添加如下內(nèi)容:

   

復(fù)制代碼 代碼如下:
sub vcl_recv {
      if ( !( req.url ~ ^/admin/) ) {
        unset req.http.Cookie;
      }
    }

 

有些 cookies 可能非常重要,比如已經(jīng)登錄的用戶 cookies 就不應(yīng)該緩存。所以,你就不會(huì)希望排除所有的 cookies。此處使用一個(gè)正則表達(dá)式可以定義那些 cookies 是我們需要的。也可以下哦那個(gè)網(wǎng)上找到很多解決這個(gè)問(wèn)題的方案。對(duì)于分析工具的 cookies,你可以添加如下內(nèi)容:

   

復(fù)制代碼 代碼如下:
sub vcl_recv {
      // Remove has_js and Google Analytics __* cookies.
      set req.http.Cookie = regsuball(req.http.Cookie, "(^|;s*)(_[_a-z]+|has_js)=[^;]*", "");
      // Remove a ";" prefix, if present.
      set req.http.Cookie = regsub(req.http.Cookie, "^;s*", "");
    }

 

Varnish 文檔中有一個(gè)專門的部分講解 cookies。

在大多數(shù)情境下,按照上述配置 Varnish,并移除分析工具的 cookies,將會(huì)大大加快網(wǎng)站的訪問(wèn)速度。一旦 Varnish 建立并運(yùn)行起來(lái),在熟悉了配置的基礎(chǔ)上,你就可以微調(diào)配置,從緩存規(guī)則中獲得最佳性能。
進(jìn)階

更多資料,請(qǐng)參考 Varnish 官方文檔。你應(yīng)該從現(xiàn)在起嘗試一些操作實(shí)例,深入了解 Varnish 的基礎(chǔ)知識(shí)。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲成人av免费观看 | 中文国产在线观看 | 欧美一级在线 | 亚洲国产精品久久 | 日本一本视频 | 国产高清精品一区 | 亚洲热av | 国产精品18久久久久久久久 | 久久婷婷av| 久久中文字幕一区二区 | 欧美成人免费在线视频 | 亚洲永久免费视频 | 精品久久久久久久久久久久 | 亚洲国产精品久久久久久 | 天堂中文网 | 九九久久九九 | av小说在线观看 | 国产精品免费一区 | 国产欧美日韩综合精品一区二区 | 欧美精品一二区 | 综合久久久久 | 成人av一区二区亚洲精 | 欧美综合成人网 | av手机在线播放 | 国产精品毛片久久久久久 | 91在线公开视频 | 成人免费毛片aaaaaa片 | 日韩影音| 日韩福利视频导航 | 久久国产精品视频 | 男女做爰猛烈叫床无遮挡 | 久久精品无码一区二区三区 | av77| 天天干天天看天天操 | 在线中文字幕视频 | 久久久精品影院 | 精品国产视频 | 欧美日本国产一区 | 毛片免费观看网址 | 亚洲免费一区二区 | 亚洲欧美高清 |