Tengine的实战
随着竞考网承接的竞赛越来越多,挑战也越来越多,好多细节优化需要跟上。之前在淘宝做研发的时候,就用过基于Nginx增强的 Tengine ,在竞考网上正好能拿来实战一下。
使用concat减少请求数量
Tengine有个非常好用的功能: concat ,组合多个CSS、JavaScript文件的访问请求变成一个请求。
示例:
<script src="http://cdn.jingkao.net/js/jquery.js"></script>
<script src="http://cdn.jingkao.net/js/common.js"></script>
<script src="http://cdn.jingkao.net/js/vue.js"></script>
<!-- 合并成 -->
<script src="http://cdn.jingkao.net/js/??jquery.js,common.js,vue.js"></script>
针对静态目录配置Tengine:
location /js/ {
concat on; #启用合并
concat_max_files 30; #最多合并的文件数
}
Play模板里面代码:
#{js base: '/js/'}
jquery.js
common.js
vue.js
#{/js}
通过#{js}
标签来实现,在开发环境中输出多个独立<script>
标签(本地开发环境未配置Tengine),而在正式环境中整合成一个<script>
标签.
使用trim减少html体积
trim 能删除html多余注释和空白符号(\n,\r,\t,' ')。
location / {
trim on;
proxy_pass http://web-server/;
}
查看tengine内存信息
查看worker进程信息
http {
server {
listen 80;
location = /debug_pool {
debug_pool;
}
}
}
请求URI /debug_pool,可以获取到接受该请求的worker进程的内存使用情况。
页面输出如下:
$ curl http://localhost:80/debug_pool
pid:18821
size: 223784 num: 2 cnum: 1 lnum: 10 ngx_init_cycle
size: 1536 num: 4 cnum: 1 lnum: 10 ngx_event_accept
size: 0 num: 1 cnum: 0 lnum: 0 ngx_http_lua_create_fake_request
size: 0 num: 1 cnum: 0 lnum: 0 main
size: 0 num: 1 cnum: 0 lnum: 0 ngx_http_lua_create_fake_connection
size: 0 num: 1 cnum: 0 lnum: 6 ngx_http_server_names
size: 8192 num: 4 cnum: 1 lnum: 0 ngx_http_create_request
size: 0 num: 1 cnum: 0 lnum: 0 ngx_http_lua_init_worker
size: 228KB num: 15 cnum: 3 lnum: 26 [SUMMARY]