nginx rewrite重写实战及gzip压缩和expires缓存

一、rewrite重写:
1、rewrite时,rewrite内容中,每一个正则表达式中的"(正则表达式)"内容表示一个块,解析式,程序会保存其中匹配的值,这些值就是需要重写到的链接的参数,例如:
rewrite article-(\d+).html article.php?id=$1 # 其中$1是正则表达(\d+)中匹配的参数。
又如:
rewrite article-(\d+)-(\w+).html articel.php?id=$1&key=$2 #其中$1是(\d+)匹配到的值,$2是(\w+)匹配到的值。
以上称为正则表达式的反向重写
location / {
root html;
rewrite article-(\d+).html article.php?id=$1;
rewrite article-(\d+)-(\w+).html articel.php?id=$1&key=$2;
}

二、gzip压缩

gzip压缩能有效节省带宽,提升网站的响应速度
nginx的gzip模块的具体使用方法可到官网的官方文档查看
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资源的.
比较小的文件不必压缩,

三、expires:nginx的缓存设置 提高网站性能

在nginx官网文档的:http_core_module模块中

对于网站的图片,尤其是新闻网站,图片一单发布,改动的可能是非常小的,因此我们希望,在用户访问一次后,将图片缓存在用户的浏览器端,且是时间比较长的换成

这个需求可以通过nginx的expires设置来达到目的
nginx中,设置过期时间非常简单
我们可以在nginx的配置文件中的location或if段里来写
格式:
expires 30s #缓存30秒
expires 30m #缓存30分钟
expires 2h; #缓存2小时
expires 30d; #缓存30天
(注意:服务器的日期要准确,如果服务器的日期落后于实际日期,坑你导致缓存失效)

如何知道expires配置是否已生效呢?
可以在浏览器中查看对应资源文件的加载的http头中是否存在这两个参数:
Cache-control:max-age = 88888 #缓存的最大有效时间
expires:xxxxx #过期时间
如下图:
在这里插入图片描述
expires配置示例如下:
在这里插入图片描述
另外:304也是一种很好的缓存手段
原理是:服务器响应文件内容是,同时响应etag标签(内容的签名,内 容一变,它也变)和last_modified_since这两个标签值。浏览器下次去请求时,头信息发送这两个标签,服务器检测文件有没有发生变化,如无,头信息直接返回etag,last_modified_since这两个标签。
浏览器直达内容没有改变,于是直接调用本地缓存。
这个过程,也请求了服务器,但是传送的内容极少。
对于变化周期较短的资源,如静态html、js、css,比较适用于这个方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值