网页在服务器端通过了gzip或者其余格式的压缩后的输出明显减小了content-length字节,当访问过百万时,这些减小的字节就会变为客观的流量给节约下来;从而减轻服务器的压力以及网页的访问速度;javascript
客户端在向服务端发送http请求时,在请求头中有一个Accept-Encoding的头信息,该头信息告知服务器端本客服端能接收什么样的压缩文件,若是服务器端配置了压缩的需求,就会返回相应的压缩文件,而后浏览器再解码呈现出来;咱们在作采集时,须要采集的是未压缩的文件,因此在http请求头上不要包含Accept-Encoding的键;php
经过这个原理在php给app写接口时,可作一些安全方面的处理,具体如何实现,期待和有经验的app开发人员一块儿研究.
在http段添加以下配置css
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压缩标志
Examplehtml
gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\.";
注意:java
这里的缓存控制主要是针对图片,css,js等变化周期较短的静态文件;以图片为例,当咱们第一次访问这张图片时,服务器返回的是200,同时在响应头返回了两个键,Etag:即该文件的'指纹'(惟一标识)以及Last-Modified:'文件的修改时间';此时浏览器,以及其余的缓存服务器就会把这张图片给缓存起来;再次请求这张图片时,请求头增长了两个键值,If-Modified-Since:上次发生改变的时间;If-None-Match:上次文件自己的Etag值,服务器根据这两个键值判断其Etag和Last-Modified,若是都没发生改变就不返回这张图片,只返回一个304的状态码,服务器接收到这个304的状态码就会本身去从缓存里面找这个被缓存的图片;
这样就减小了服务器的带宽压力以及提高了网站访问速度;浏览器
在location段以及if段能够设置缓存
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; }
格式安全
expires 30s; expires 30m; expires 2h; expires 30d;
注意:服务器的日期要准确,若是服务器的日期落后于实际日期,可能致使缓存失效服务器