自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何借助PageSpeed,為Nginx網(wǎng)站服務(wù)器提速?

譯文
運維 系統(tǒng)運維 新聞
本文中將介紹如何優(yōu)化Nginx網(wǎng)站服務(wù)器,以提升其性能。雖然Nginx網(wǎng)站服務(wù)器本身已儼然成為運行速度最快、可擴展性最佳的網(wǎng)站服務(wù)器之一,但是仍有眾多方法可以調(diào)整優(yōu)化其常規(guī)安裝系統(tǒng)的性能。

【2014年2月11日 51CTO外電頭條】網(wǎng)站加載速度越快,訪客互動性、留住率和轉(zhuǎn)換率就越高,這早已不是什么秘密。網(wǎng)站每延遲100毫秒,亞馬遜的銷售額就會減少1%;延遲增加500毫秒,這意味著谷歌的流量和收入就會減少20%。要是有一個辦法可以為你的網(wǎng)站服務(wù)器提速,又不必升級到功能更強大的服務(wù)器,就沒有理由不試一試這個辦法。

我在本教程中將介紹如何優(yōu)化Nginx網(wǎng)站服務(wù)器,以提升其性能。雖然Nginx網(wǎng)站服務(wù)器本身已儼然成為運行速度最快、可擴展性***的網(wǎng)站服務(wù)器之一,但是仍有眾多方法可以調(diào)整優(yōu)化其常規(guī)安裝系統(tǒng)的性能。

舉例說,有一個由谷歌開發(fā)的網(wǎng)站服務(wù)器模塊,名為PageSpeed模塊(https://developers.google.com/speed/pagespeed/module)。PageSpeed旨在縮短網(wǎng)頁加載的時間,減少網(wǎng)站服務(wù)器的帶寬使用量。最近,已發(fā)布了Nginx版本的PageSpeed模塊(ngx_pagespeed)。作為一種有望為Nginx網(wǎng)站服務(wù)器提速的可行方法,我將演示如何在Nginx中啟用并配置ngx_pagespeed模塊。

PageSpeed的功能特性

PageSpeed模塊可以使用數(shù)量眾多的重寫"過濾器",每個過濾器都可以選擇性地開啟/關(guān)閉,從而自動進行各種優(yōu)化(比如,減小文檔大小、減少HTTP請求數(shù)據(jù)、減少HTTP往返次數(shù)以及縮短DNS解析時間)。

下面是ngx_pagespeed支持的其中一些過濾器。想了解支持的全部過濾器,請參閱官方文檔。

  • Collapse Whitespace(壓縮空白):通過把HTML網(wǎng)頁中的多處連續(xù)空白換成一處空白,減少帶寬使用量。
  • Canonicalize JavaScript Libraries(規(guī)范化轉(zhuǎn)換JavaScript庫):通過自動把流行的JavaScript庫換成免費托管的JavaScript庫(比如由谷歌托管),減少帶寬使用量。
  • Combine CSS(合并CSS):通過把多個CSS文件合并成一個CSS文件,減少HTTP請求數(shù)量。
  • Combine JavaScript(合并JavaScript):通過把多個JavaScript文件合并成一個JavaScript文件,減少HTTP請求數(shù)量。
  • Elide Attributes(省略屬性):通過刪除由默認屬性指定的標簽,縮小文檔大小。
  • Extend Cache(擴展緩存):通過優(yōu)化網(wǎng)頁資源的可緩存性,減少帶寬使用量。
  • Flatten CSS Imports(精簡CSS導(dǎo)入):通過刪除CSS文件中的@import,減少HTTP請求往返次數(shù)。
  • Lazyload Images(延時加載圖片):延時加載在客戶端瀏覽器上看不見的圖片。
  • Minify JavaScript(縮小JavaScript):通過縮小JavaScript,減少帶寬使用量。
  • Optimize Images(優(yōu)化圖片):通過引入更多的內(nèi)嵌圖片、壓縮圖片,或者將GIF圖片轉(zhuǎn)換成PNG圖片,優(yōu)化圖片分發(fā)。
  • Pre-Resolve DNS(預(yù)解析DNS):通過預(yù)解析DNS,縮短DNS解析時間。
  • Prioritize Critical CSS(優(yōu)化加載關(guān)鍵CSS規(guī)則):重寫CSS文件,以便首先加載渲染頁面的CSS規(guī)則。

與Apache網(wǎng)站服務(wù)器不一樣,Nginx模塊無法在運行時動態(tài)加載,而是必須在編譯時加載。截至本文截稿時,ngx_pagespeed模塊并未內(nèi)置在隨主要Linux發(fā)行版(比如Fedora 19)發(fā)布的Nginx程序包中。因而,想使用Nginx中的PageSpeed,你需要利用源代碼來構(gòu)建Nginx。

借助ngx_pagespeed,構(gòu)建和安裝Nginx

安裝用于構(gòu)建nginx和ngx_pagespeed的必備要素。

在Debian、Ubuntu或Linux Mint上:

 

  1. $ sudo apt-get install build-essential zlib1g-dev libpcre3-dev 

在Fedora、CentOS或RHEL上:

 

  1. $ sudo yum install gcc-c++ pcre-devel zlib-devel make wget 

下載并安裝ngx_pagespeed源代碼,如下所示。ngx_pagespeed會被解壓縮到/usr/local/nginx/modules/ngx_pagespeed-1.7.30.3-beta

  1. $ sudo mkdir -p /usr/local/nginx/modules 
  2. $ wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.3-beta.tar.gz 
  3. $ sudo tar xvfvz v1.7.30.3-beta.tar.gz -C /usr/local/nginx/modules --no-same-owner 

下載預(yù)構(gòu)建的PSOL(PageSpeed優(yōu)化庫,https://developers.google.com/speed/pagespeed/psol),并將它安裝到ngx_pagespeed目錄下:

  1. $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz 
  2. $ sudo tar xvfvz 1.7.30.3.tar.gz -C /usr/local/nginx/modules/ngx_pagespeed-1.7.30.3-beta --no-same-owner 
  3. $ sudo find /usr/local/nginx/modules/ngx_pagespeed-1.7.30.3-beta/ -type d -exec chmod +rx {} \; 
  4. $ sudo find /usr/local/nginx/modules/ngx_pagespeed-1.7.30.3-beta/ -type f -exec chmod +r {} \; 

從http://nginx.org/en/download.html,下載Nginx的***穩(wěn)定版。

  1. $ wget http://nginx.org/download/nginx-1.4.4.tar.gz 

***,在ngx_pagespeed模塊啟用的情況下,編譯Nginx,并安裝它,如下所示。

  1. $ tar xvfvz nginx-1.4.4.tar.gz 
  2. $ cd nginx-1.4.4 
  3. $ ./configure --add-module=/usr/local/nginx/modules/ngx_pagespeed-1.7.30.3-beta --prefix=/usr/local/nginx --sbin-path=/usr/local/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx 
  4. $ make 
  5. $ sudo make install 

你應(yīng)該確認,ngx_pagespeed模塊已添加到安裝的Nginx系統(tǒng)上,如下所示。

  1. $ /usr/local/nginx/sbin/nginx -V 
  2. nginx version: nginx/1.4.4 
  3. built by gcc 4.8.2 20131212 (Red Hat 4.8.2-7) (GCC) 
  4. configure arguments: --add-module=/usr/local/nginx/modules/ngx_pagespeed-1.7.30.3-beta . . . . 

配置Nginx中的ngx_pagespeed模塊

想啟用并配置ngx_pagespeed,就要編輯Nginx配置的server部分。nginx.conf的下面這個示例表明了如何指定一個或多個PageSpeed過濾器。

  1. $ sudo vi /etc/nginx/nginx.conf 
  2. server { 
  3. # 偵聽的端口 
  4. listen 80; 
  5. # 服務(wù)器名稱 
  6. server_name xmodulo.com www.xmodulo.com; 
  7. # 記下根目錄 
  8. root /usr/local/nginx/html; 
  9. # 訪問日志 
  10. access_log /var/log/nginx/access.log main; 
  11. # 啟用ngx_pagespeed 
  12. pagespeed on; 
  13. # 在此放置一個或多個pagespeed過濾器。 

說到指定PageSpeed過濾器,有兩種不同的級別可供你選擇:CoreFilters和PassThrough。除非有所指定,否則默認情況下使用CoreFilters。

對新手用戶而言:使用CoreFilters

CoreFilters含有一系列PageSpeed過濾器,谷歌認為這些過濾器對大多數(shù)網(wǎng)站來說是安全的。如果啟用CoreFilters,你就自動啟用了一系列"安全"規(guī)則。所以,推薦新手用戶采用這種方法。如果你愿意,也可以禁用CoreFilters中的某個或某些過濾器,或者選擇性地啟用額外的過濾器。下面這個例子表明了使用CoreFilters的ngx_pagespeed配置。

  1. server { 
  2. # 偵聽的端口 
  3. listen 80; 
  4. # 服務(wù)器名稱 
  5. server_name xmodulo.com www.xmodulo.com; 
  6. # 記下根目錄 
  7. root /usr/local/nginx/html; 
  8. # 訪問日志 
  9. access_log /var/log/nginx/access.log main; 
  10. # 啟用ngx_pagespeed 
  11. pagespeed on; 
  12. pagespeed FileCachePath /var/ngx_pagespeed_cache; 
  13. # 啟用CoreFilters 
  14. pagespeed RewriteLevel CoreFilters; 
  15. # 禁用CoreFilters中的某些過濾器 
  16. pagespeed DisableFilters rewrite_images; 
  17. # 選擇性地啟用額外的過濾器 
  18. pagespeed EnableFilters collapse_whitespace; 
  19. pagespeed EnableFilters lazyload_images; 
  20. pagespeed EnableFilters insert_dns_prefetch; 

想了解CoreFilters中的全部過濾器,請參閱官方文檔

對高級用戶而言:使用PassThrough

如果是高級用戶,你可以使用PageThrough級別,你可以手動啟用個別過濾器。

  1. server { 
  2. # 偵聽的端口 
  3. listen 80; 
  4. # 服務(wù)器名稱 
  5. server_name xmodulo.com www.xmodulo.com; 
  6. # 記下根目錄 
  7. root /usr/local/nginx/html; 
  8. # 訪問日志 
  9. access_log /var/log/nginx/access.log main; 
  10. # 啟用ngx_pagespeed 
  11. pagespeed on; 
  12. pagespeed FileCachePath /var/ngx_pagespeed_cache; 
  13. # 禁用CoreFilters 
  14. pagespeed RewriteLevel PassThrough; 
  15. # 啟用壓縮空白過濾器 
  16. pagespeed EnableFilters collapse_whitespace; 
  17. # 啟用JavaScript庫卸載 
  18. pagespeed EnableFilters canonicalize_javascript_libraries; 
  19. # 把多個CSS文件合并成一個CSS文件 
  20. pagespeed EnableFilters combine_css; 
  21. # 把多個JavaScript文件合并成一個JavaScript文件 
  22. pagespeed EnableFilters combine_javascript; 
  23. # 刪除帶默認屬性的標簽 
  24. pagespeed EnableFilters elide_attributes; 
  25. # 改善資源的可緩存性 
  26. pagespeed EnableFilters extend_cache; 
  27. # 更換被導(dǎo)入文件的@import,精簡CSS文件 
  28. pagespeed EnableFilters flatten_css_imports; 
  29. pagespeed CssFlattenMaxBytes 5120; 
  30. # 延時加載客戶端看不見的圖片 
  31. pagespeed EnableFilters lazyload_images; 
  32. # 啟用JavaScript縮小機制 
  33. pagespeed EnableFilters rewrite_javascript; 
  34. # 啟用圖片優(yōu)化機制 
  35. pagespeed EnableFilters rewrite_images; 
  36. # 預(yù)解析DNS查詢 
  37. pagespeed EnableFilters insert_dns_prefetch; 
  38. # 重寫CSS,首先加載渲染頁面的CSS規(guī)則 
  39. pagespeed EnableFilters prioritize_critical_css; 

另外的配置步驟:

創(chuàng)建將由Nginx寫入的一個文件緩存目錄。

  1. $ sudo mkdir /var/ngx_pagespeed_cache 
  2. $ sudo chown nginx:nginx /var/ngx_pagespeed_cache 

為了方便起見,為Nginx創(chuàng)建一個初始化腳本。

  1. $ wget https://github.com/MovLib/www/raw/master/bin/init-nginx.sh 
  2. $ sudo mv init-nginx.sh /etc/init.d/nginx 
  3. $ sudo chmod 0755 /etc/init.d/nginx 

***,啟動Nginx。

 

  1. $ sudo /etc/init.d/nginx start 

注意:除了ngx_pagespeed外,你可能還需要定義額外的Nginx模塊(比如HTTPS/SSL支持等),具體視需求而定。這種情況下,你需要在Nginx編譯這個環(huán)節(jié)來添加這些模塊。請參閱這篇教程(http://xmodulo.com/2014/01/compile-install-nginx-web-server.html),了解如何啟用額外的Nginx模塊。

原文鏈接:http://xmodulo.com/2014/01/speed-nginx-web-server-pagespeed.html

責任編輯:黃丹 來源: 51CTO.com
相關(guān)推薦

2019-04-08 08:39:47

Nginx代理服務(wù)器

2019-10-22 10:20:13

Nginx反向代理服務(wù)器

2015-04-07 09:04:23

Monit服務(wù)器監(jiān)控系統(tǒng)

2014-09-22 09:52:06

2015-07-29 09:40:45

Pandora FMSUbuntu服務(wù)器監(jiān)控

2018-09-21 13:59:06

戴爾戴爾服務(wù)器

2020-04-15 20:57:57

NginxWeb服務(wù)器

2021-07-28 23:32:09

Nginx服務(wù)器Https

2017-12-27 10:18:09

ApacheNginx服務(wù)器

2010-05-10 14:22:44

CDN負載均衡

2010-12-01 14:36:16

趨勢科技Web信譽查詢

2018-08-21 10:35:18

NginxWeb服務(wù)器

2018-12-13 10:16:20

NginxWeb服務(wù)器

2013-09-16 10:23:21

2017-03-20 14:00:33

ARM服務(wù)器微軟

2018-05-18 09:43:37

服務(wù)器架構(gòu)大型網(wǎng)站

2010-03-30 17:35:04

Nginx服務(wù)器

2018-10-26 09:52:25

Nginx服務(wù)器負載均衡

2023-10-12 19:46:26

Nginx服務(wù)器

2021-11-24 08:00:00

服務(wù)器Web系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號