在ATS 5.3.0上测试网页加速插件ats_pagespeed

来源:互联网 发布:淘宝的红包怎么领取 编辑:程序博客网 时间:2024/05/17 02:53

历史回顾

网页加速的原理源远流长,最著名的是yahoo的那个《Yahoo! 网站性能最佳体验的34 条黄金守则》,基于此思想,诞生了两个比较有名的网站优化工具,YSlow和Page Speed,它们都系出名门,前者出自Yahoo,后者出自Google,这里我们只谈论pagespeed,它最初是作为Apache的一个网页加速模块mod_pagespeed来使用的,因为性能优越,目前已经被移植到nginx上面,称为nginx_pagespeed

https://github.com/pagespeed/ngx_pagespeed 

demo展示页面 

http://ngxpagespeed.com/ngx_pagespeed_example/

另外,它也有一个中国版本的远亲,淘宝的开源项目Tengine上也有这个模块的部分移植
     http://tengine.taobao.org/

     http://tengine.taobao.org/document_cn/http_concat_cn.html
下面是一些ngx_pagespeed相关的链接
    https://blog.hackroad.com/operations-engineer/linux_server/9030.html
    http://www.linuxidc.com/Linux/2013-09/89657p2.htm

另外,我注意到ATS中也有一个类似的插件, 参见
     https://github.com/apache/trafficserver/tree/master/plugins/experimental/ats_pagespeed
     http://www.atspagespeed.com/
源码在ats的最新代码plugins/experimental/ats_pagespeed中都有
    https://github.com/apache/trafficserver

下面我们只讨论ats_pagespeed这个模块,并在ATS 5.3.0上对它进行简单的安装和测试。我的ATS安装前缀在/opt/ats下面,并非默认的/usr/local

这里仅是记录一下我的实践报告,以作备忘。
相关提示信息在ats_pagespeed源码中的README文件中,需要单独编译安装该动态库ats_pagespeed.so,同时会生成动态库gzip.so


源码修改

如果不加修改,直接编译,你就会发现如下编译错误


编译之前注意修改子目录gzip下的源码
1).在gzip.cc增加一个头文件
#include "ink_defs.h"


同时在Makefile中指出该头文件所在的源码路径
$(TSXS) -I../../../../lib/ts -o gzip.so -v -C *.cc


2).将源码中的ink_defs.h目录复制到ats_pagespeed.cc相同的目录,删除其中max/min的模板定义
cp /usr/local/src/trafficserver-5.3.0/lib/ts/ink_defs.h  ink_defs.h
在ink_defs.h中修改#include "ink_config.h"

#include "../../../lib/ts/ink_config.h"


修改ats_pagespeed.cc,增加头文件#include "ink_defs.h"


3).配置文件的存放目录在代码ats_pagespeed.cc中被写死为/usr/local/etc/trafficserver/psol,考虑到我们的ats的安装前缀是/opt/ats,而不是默认的/usr/local, 我们需要统一修改为/opt/ats/etc/trafficserver/psol
先查后替换
find ./ -type f | xargs grep "/usr/local/etc/trafficserver"
确定只是ats_pagespeed.cc中需要修改
sed -i "s:/usr/local/etc/trafficserver:/opt/ats/etc/trafficserver:g" ats_pagespeed.cc


编译和安装
make
make install
注意make时会首先下载google的psol静态库包,目前版本是1.8.31.4


配置
在plugin.config中添加如下行
ats_pagespeed.so
gzip.so /opt/ats/etc/trafficserver/gzip.config 
创建两个写死的目录
mkdir -p /tmp/ps_log/
mkdir -p /tmp/ats_ps/
ats_pagespeed的配置文件可以任意命名,这里暂定pagespeed.config,它将存放到写死的目录/opt/ats/etc/trafficserver/psol下面,这个文件夹下面的文件会被监视,当更新时会自动重载

mkdir -p /opt/ats/etc/trafficserver/psol
cd /opt/ats/etc/trafficserver/psol
vim pagespeed.config
下面是pagespeed.config的内容
#[host]                                                                                                                                                                                                                               
[10.10.110.162]
#Force traffic server to cache all origin responses
override_expiry
pagespeed FlushHtml on
pagespeed RewriteLevel CoreFilters
pagespeed EnableFilters rewrite_domains,trim_urls
pagespeed MapRewriteDomain http://10.10.110.162 http://www.foo.com
pagespeed MapOriginDomain http://10.10.110.162 http://www.foo.com
pagespeed EnableFilters prioritize_critical_css,move_css_to_head,move_css_above_scripts
pagespeed EnableFilters fallback_rewrite_css_urls,insert_img_dimensions,lazyload_images,local_storage_cache
pagespeed EnableFilters prioritize_critical_css,rewrite_css
pagespeed EnableFilters combine_javascript,combine_css
这里ip是运行ATS主机的ip,请根据实际情况修改。

下面是gzip.config配置文件的内容(可以参考ats_pagespeed/gzip目录下面的同名文件)
enabled true                          
remove-accept-encoding  false         
cache true                            
                                      
compressible-content-type  text/*     
#compressible-content-type  image/*   
compressible-content-type *javascript* 

在records.config中设置
CONFIG proxy.config.url_remap.pristine_host_hdr INT 0

日志
打开调试日志,要求包含这些调试标志
ats_pagespeed* ats-speed, ats-speed-vlog
在records.config中配置如下:
CONFIG proxy.config.diags.debug.enabled INT 1
CONFIG proxy.config.diags.debug.tags STRING regex_revalidate.*|background_fetch.*|ats*

下面是部分日志截图


测试
打开新浪测试
http://finance.sina.com.cn/china/20150530/140422307455.shtml
还是发现个别块出现编码错误的问题,和原来的版本基本没有区别


后续工作

(待续)

参考文献

[1].https://developer.yahoo.com/performance/rules.html       英文版

[2].http://blog.csdn.net/xiaojianpitt/article/details/4393951   中文版

0 0
原创粉丝点击