• 注册
  • 关于作者
    达人认证:程序员
    关注 1 粉丝 1 喜欢 0 内容 106
    广东省·广州市
    聊天 送礼
    • 查看作者
    • Nginx如何启用ETag,提高访问速度

      ETag全称EntityTags,HTTP协议规格说明中定义“ETag”为“被请求变量的实体值”。我们也可以把ETag理解为是一个客户端与服务器关联的记号。这个记号告诉客户端,当前网页在上次请求之后是否有发生变化,当发生变化时,ETag的值重新计算,并返回200状态码。如果没有变化,返回304状态码。从而不会重新加载整个页面信息。

      以下会告诉你,Nginx如何开启ETag。

      步骤1
             确认Nginx版本,命令:Nginx安装目录/sbin/nginx–v,

      版本为1.7.3及更高,继续步骤2;版本为1.7.3以下,1.3.3及以上,进行步骤3;版本为1.3.3以下,不支持ETag,请升级您的Nginx。

      步骤2
             确认没有关闭ETag:打开Nginx的配置文件nginx.conf(默认位置Nginx安装目录/conf/),确保其中没有出现etagoff;,下图为出现的情况,请将此行删除。

      确认没有使用ngx_headers_more清除ETag头:同样在配置文件中不能出现如下语句的任意一句,如果出现请将其删除。


      重新启动Nginx,就启用ETag功能了。

      Apache如何启用ETag,提高访问速度

      Linux

      步骤3

      查看是否开启了gzip,且是否和etag出现冲突,出现冲突去步骤4,没有去步骤2。
      打开Nginx的配置文件nginx.conf(默认位置Nginx安装目录/conf/),其中出现gzip on;语句证明开启了gzip,如图

      开启gzip时,可能与etag出现冲突,用浏览器多次请求此网站的静态元素,如果只返回200,不返回304,证明存在冲突,请去步骤4;没有冲突去步骤2。

      步骤4
              请关闭gzip,即将上一步中的gzipon;改为gzip off;然后去步骤2。

      若不想关闭gzip,并要开启ETag,同时仍要坚持使用当前的Nginx版本,只能修改源码并重新编译。
      下载此版本安装包并解压,将其目录下/src/http/modules/ngx_http_gzip_filter_module.c
      文件中约309行左右的ngx_http_clear_etag(r);一行注释掉或删掉。如下图

      如果没有找到ngx_http_clear_etag(r);而是发现ngx_http_weak_etag(r);如下图,证明此Nginx

      没有gzip和etag冲突的问题,不必进行任何修改。
      重新编译源码安装Nginx,解决这个冲突,然后去步骤2。

      Tengine更新记录(淘宝基于Nginx开发的Web服务器)

      Linux

    • 0
    • 0
    • 0
    • 64
    • 单栏布局 侧栏位置: