gzip压缩概述在服务器端通过gzip或其他格式压缩的网页输出的内容长度字节显着减少。当访问量超过百万时,这些减少的字节将成为客观的流量来节省;从而降低服务器的压力和网页的访问速度;原理是客户端向服务器发送http请求时,请求头中有一个Accept-Encoding头,告诉服务器客户端可以接收什么样的信息压缩文件,如果服务器配置了压缩要求,它会返回相应的压缩文件,然后浏览器会解码并呈现出来;我们采集的时候,需要采集解压后的文件,所以不包含Accept-Encoding的key;通过这个原理,php在给app写接口的时候,可以做一些安全处理。具体如何实现,期待与有经验的APP开发者一起学习。Nginx压缩在http段gzipon|off增加如下配置;#是否打开gzipgzip_buffers324K|168K#buffering(内存中缓存了多少块?每个块有多大?)gzip_comp_level[1-9]#推荐6个压缩级别(级别越高,压缩越小,CPU计算资源浪费越多)gzip_disable#正则匹配UA,什么样的Uri不执行gzipgzip_min_length200#开始压缩的最小长度(再小,不压缩也没意义)gzip_http_version1.0|1.1#the开始压缩的http协议版本(可以不设置,目前几乎都是1.1协议)gzip_proxied#设置请求者的代理服务器,如何缓存内容gzip_typestext/plainapplication/xml#压缩什么类型的文件这样astxt,xml,html,cssgzip_varyon|off#是否传输gzip压缩标志示例gzipon;gzip_min_length1k;gzip_buffers416k;gzip_http_version1.1;gzip_comp_level2;gzip_typestext/plainapplication/javascriptapplication/x-javascripttext/javascripttext/CSS一个application/xmlapplication/xml+rss;gzip_varyon;gzip_proxiedexpiredno-cacheno-storeprivateauth;gzip_disable"MSIE[1-6]\.";注意:图片/mp3等二进制文件不需要压缩,因为压缩率比较小,比如100->80字节,压缩也会消耗CPU资源。较小的文件不需要压缩,意义不存在。过期浏览器缓存设置概述这里的缓存控制主要针对图片、css、js等变化周期短的静态文件;以图片为例,当我们第一次访问这张图片时,服务器返回200,同时在响应头中返回两个key,Etag:文件的‘指纹’(唯一标识符)和Last-Modified:'文件的修改时间';这时,浏览器和其他缓存服务器会缓存这张图片;再次请求这张图片时,在请求头中添加两个键值,If-Modified-Since:上次更改的时间;If-None-Match:文件本身上次的Etag值,服务器根据这两个键值判断它的Etag和Last-Modified,如果没有变化,则不会返回这张图片,只返回一个304状态code,服务器收到304状态码后会从缓存中查找缓存的图片;减轻服务器带宽压力,提高网站访问速度;在location段和if段配置,可以设置location~.*\.(gif|jpg|jpeg|png|bmp|swf)${expires30d;}location~.*\.(js|css)?${expires12h;}格式expires30s;expires30m;expires2h;expires30d;注意:服务器日期一定要准确,如果服务器日期晚于实际日期,可能会导致缓存失效
