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]