nginx之緩存和壓縮

location /ecshop{
   rewrite "goods-(\d{1,7})\.html" /ecshop/goods.php?id=1;
}
#有{}正則用「」
[root@localhost nginx]# ./sbin/nginx -s stop
[root@localhost nginx]# ./sbin/nginx
http://192.168.88.170/ecshop/index.php
Rewrite語法
Rewrite 正則表達式  定向後的位置 模式

Goods-3.html ---->Goods.php?goods_id=3
goods-([\d]+)\.html ---> goods.php?goods_id =$1  #反向引用#########################

location /ecshop {
index index.php;
rewrite goods-([\d]+)\.html$ /ecshop/goods.php?id=$1;
rewrite article-([\d]+)\.html$ /ecshop/article.php?id=$1;
rewrite category-(\d+)-b(\d+)\.html /ecshop/category.php?id=$1&brand=$2;

rewrite category-(\d+)-b(\d+)-min(\d+)-max(\d+)-attr([\d\.]+)\.html /ecshop/category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5;

rewrite category-(\d+)-b(\d+)-min(\d+)-max(\d+)-attr([\d+\.])-(\d+)-([^-]+)-([^-]+)\.html /ecshop/category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8;
}

注意:用url重寫時, 正則裏若是有」{}」,正則要用雙引號包起來
http://192.168.88.170/ecshop/admin/index.php
商店設置->基本設置->url簡單重寫
[root@localhost nginx]# more conf/mime.types

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/x-javascript              js;
    application/atom+xml                  atom;
    application/rss+xml                   rss;

    text/mathml                           mml;
    text/plain                            txt;
    text/vnd.sun.j2me.app-descriptor      jad;
    text/vnd.wap.wml                      wml;
    text/x-component                      htc;


nginx的緩存設置  提升網站性能
對於網站的圖片,尤爲是新聞站, 圖片一旦發佈, 改動的多是很是小的.咱們但願 可否在用戶訪問一次後, 圖片緩存在用戶的瀏覽器端,且時間比較長的緩存.
能夠, 用到 nginx的expires設置 .
nginx中設置過時時間,很是簡單,
在location或if段裏,來寫.
格式  expires 30s;
      expires 30m;
      expires 2h;
      expires 30d;
(注意:服務器的日期要準確,若是服務器的日期落後於實際日期,可能致使緩存失效)
另: 304 也是一種很好的緩存手段
原理是: 服務器響應文件內容是,同時響應etag標籤(內容的簽名,內容一變,他也變), 和 last_modified_since 2個標籤值
瀏覽器下次去請求時,頭信息發送這兩個標籤, 服務器檢測文件有沒有發生變化,如無,直接頭信息返回 etag,last_modified_since
瀏覽器知道內容無改變,因而直接調用本地緩存.
這個過程,也請求了服務器,可是傳着的內容極少.
對於變化週期較短的,如靜態html,js,css,比較適於用這個方式
網頁內容的壓縮編碼與傳輸速度優化
咱們觀察news.163.com的頭信息
請求:
Accept-Encoding:gzip,deflate,sdch
響應:
Content-Encoding:gzip
Content-Length:36093
再把頁面另存下來,觀察,約10W字節,實際傳輸的36093字節
緣由-------就在於gzip壓縮上.

原理:
瀏覽器---請求----> 聲明能夠接受 gzip壓縮 或 deflate壓縮 或compress 或 sdch壓縮
從http協議的角度看--請求頭 聲明 acceopt-encoding: gzip deflate sdch  (是指壓縮算法,其中sdch是google倡導的一種壓縮方式,目前支持的服務器尚很少)
服務器-->迴應---把內容用gzip方式壓縮---->發給瀏覽器
瀏覽<-----解碼gzip-----接收gzip壓縮內容----

推算一下節省的帶寬:
假設 news.163.com  PV  2億
2*10^8  *  9*10^4 字節 ==
2*10^8 * 9 * 10^4  * 10^-9 = 12*K*G = 18T
節省的帶寬是很是驚人的

gzip配置的經常使用參數
gzip on|off;  #是否開啓gzip
gzip_buffers 32 4K| 16 8K #緩衝(壓縮在內存中緩衝幾塊? 每塊多大?)
gzip_comp_level [1-9] #推薦6 壓縮級別(級別越高,壓的越小,越浪費CPU計算資源)
gzip_disable #正則匹配UA 什麼樣的Uri不進行gzip
gzip_min_length 200 # 開始壓縮的最小長度(再小就不要壓縮了,意義不在)
gzip_http_version 1.0|1.1 # 開始壓縮的http協議版本(能夠不設置,目前幾乎全是1.1協議)
gzip_proxied          # 設置請求者代理服務器,該如何緩存內容
gzip_types text/plain  application/xml # 對哪些類型的文件用壓縮 如txt,xml,html ,css
gzip_vary on|off  # 是否傳輸gzip壓縮標誌


注意:
圖片/mp3這樣的二進制文件,沒必要壓縮
由於壓縮率比較小, 好比100->80字節,並且壓縮也是耗費CPU資源的.
比較小的文件沒必要壓縮,
nginx的緩存設置  提升網站性能
對於網站的圖片,尤爲是新聞站, 圖片一旦發佈, 改動的多是很是小的.咱們但願 可否在用戶訪問一次後, 圖片緩存在用戶的瀏覽器端,且時間比較長的緩存.
能夠, 用到 nginx的expires設置 .
nginx中設置過時時間,很是簡單,
在location或if段裏,來寫.
格式  expires 30s;
      expires 30m;
      expires 2h;
      expires 30d;
(注意:服務器的日期要準確,若是服務器的日期落後於實際日期,可能致使緩存失效)
另: 304 也是一種很好的緩存手段
原理是: 服務器響應文件內容是,同時響應etag標籤(內容的簽名,內容一變,他也變), 和 last_modified_since 2個標籤值
瀏覽器下次去請求時,頭信息發送這兩個標籤, 服務器檢測文件有沒有發生變化,如無,直接頭信息返回 etag,last_modified_since
瀏覽器知道內容無改變,因而直接調用本地緩存.
這個過程,也請求了服務器,可是傳着的內容極少.
對於變化週期較短的,如靜態html,js,css,比較適於用這個方式
 


javascript

相關文章
相關標籤/搜索