天天看點

nginx lua 小項目:根據 user_agent 顯示不同的頁面,附帶和 php 性能的對比一個小需求nginx 安裝 lua-nginx-modulelua demo 腳本小結稍微調整适配 nginx lua 子產品nginx 配置示範位址和 php 性能對比

怎麼快速學習一門新的語言呢?

如果你已經熟練掌握了一門語言,那麼其他語言都是想通的。一個小小的需求,可能會遇到很多問題,但是搜尋相關的關鍵字,就能快速實作出來,完成一個小目标,事半功倍。

死記硬背手冊,太枯燥了,反正我是看不下去,不如直接來個小項目。

pc、mobile 一個位址有兩套頁面,需要在後端根據浏覽器的 user_agent 來顯示不同的頁面。

通過 php 來做,當然可以,但是活動頁面通路量一般都比較大,想優化些,是以想嘗試下 lua。

可以直接上 openresty,不過有時候就是想折騰。

作為一個 lua 菜鳥,通過這個小需求我查了哪些資料

變量的定義

函數的寫法

循環的了解

判斷邏輯的寫法

注釋的寫法

檔案 i/o

字元串拼接 <code>..</code>

字元串查找 <code>string.match</code>

字元串轉小寫 <code>string.lower</code>

<a href="https://mengkang.net/promotion/1">https://mengkang.net/promotion/1</a>

<a href="https://mengkang.net/promotion/100">https://mengkang.net/promotion/100</a>

切換 user_agent 即可看到,不同的 pc 和 mobile 兩個版本的頁面

也就是說通路

<a href="http://mengkang.net/promotion/1">http://mengkang.net/promotion/1</a>

<a href="http://mengkang.net/promotion2/1">http://mengkang.net/promotion2/1</a>

是一樣的結果

雙核4G nginx 配置一緻 php 版本:7.0.11 php-fpm 配置

對比發現性能提示相當可觀。

PHP qps 在 3000左右,nginx_lua qps 在 7000 左右。

php 在 400 個并發的時候開始出現比較多的失敗請求,吞吐率開始下降。

而 lua 的結果在 1000 個并發的時候,失敗的請求數依舊是0。