原 Nginx Lua服務端合併靜態檔案

2022-07-27 18:18:11 字數 2299 閱讀 9878

源**已經上傳到github:

nginx-lua-static-merger是乙個基於openresty的模組,主要用於合併靜態檔案。降低http請求,加快靜態檔案訪問速度的模組。

使用nginx-lua-static-merger須要在編譯nginx時候加入openresty的模組,或者直接安裝openresty作為server。

nginx-lua-static-merger能夠讓你的js、css請求不要那麼多。乙個就夠了。

先從nginx原理來看nginx處理http請求的過程。

nginx的模組從功能上分為例如以下三類:

handlers(處理器模組),直接處理請求,並進行輸出內容和改動headers資訊等操作。handlers處理器模組一般只能有乙個。

filters (過濾器模組),主要對其它處理器模組輸出的內容進行改動操作,最後由nginx輸出。

proxies (**類模組),nginx的http upstream之類的模組。這些模組主要與後端一些服務比方fastcgi等進行互動。實現服務**和負載均衡等功能。

也就是說。乙個http請求過來,nginx先處理請求資訊,然後過濾資訊,最後丟給**來處理,它本身處理的東西並不多。它不過通過查詢配置檔案將此次請求對映到乙個location block,而此location中所配置的各個指令則會啟動不同的模組去完畢工作。

從正常來看,乙個頁面載入10來個js、css是正常的,還有10來個,即使是什麼也不幹。那麼乙個頁面也要處理掉20多個http請求,每乙個http請求都要跑一遍tcp請求,nginx回應。過濾,分配。

看張圖吧,國外乙個網速測試工具:

去掉首頁index.html的載入時間。能夠看到,載入靜態檔案css,js時間耗費了非常長的等待時間。而且image的載入是在js和css載入完後才載入的。也就是說,假設js或css載入慢了,那麼頁面就慢了。

這個頁面是github.com/grasses。

openresty是國人寫的開源專案,打包了標準的 nginx 核心。非常多的經常使用的第三方模組,以及它們的大多數依賴項。

tar xzvf ngx_openresty-version.tar

.gzcd ngx_openresty-version/

./configure

make

make install

具體的安裝教程還是去看官網咖。

|--/usr/local/openresty/nginx

| `--lua

| `--nginx-lua-static-merger.lua

| `--conf

| `--nginx.lua

|--/www/openresty/static

| `--js

| `--css

| `--cache

注意

1、nginx.conf中的lua_package_path "/usr/local/openresty/lualib/?.lua;;";

lua_package_cpath "/usr/local/openresty/lualib/?.so;;";,假設你是編譯nginx而不是直接安裝openresty,資料夾記得放對。

2、確保/www/openresty/static有lua寫的許可權。

前端呼叫方法例如以下:

nginx在location通過content_by_lua_file把接下來的處理丟個lua做邏輯。

lua通過uri進行md5編碼,推斷cache是否存在,假設cache不存在。迴圈切割、遍歷uri,訪問響應的路徑。查詢靜態檔案,存在則記錄,最後寫cache入檔案。方便下次訪問。

以下是在不作處理情況請求多個js結果:

以下是第一次請求下,lua既要獲取資料又要合併生成cache,屬於冷資料:

第二次訪問就是熱資料了,訪問速度是新增的:

-by小草

2015-06-22 20:04:10

原 Nginx Lua服務端合併靜態檔案

原始碼已經上傳到github nginx lua static merger是乙個基於openresty的模組,主要用於合併靜態檔案,減少http請求,加快靜態檔案訪問速度的模組。使用nginx lua static merger 需要在編譯nginx時候新增openresty的模組,或者直接安裝o...

Nginx Lua服務端合併靜態檔案

原始碼已經上傳到github nginx lua static merger是乙個基於openresty的模組,主要用於合併靜態檔案,減少http請求,加快靜態檔案訪問速度的模組。使用nginx lua static merger需要在編譯nginx時候新增openresty的模組,或者直接安裝op...

HTTP服務端JSON服務端

最後更新日期 2014 5 18 author kagula 內容簡介 cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一...