Nginx+Lua+OpenResty實現商品詳情頁

原文鏈接:http://www.mayikt.com/

問題

問題:nginx緩存靜態頁面怎麼區分是哪個頁面(哪個商家的頁面)?

答:根據請求url進行緩存,如產品詳情1的請求爲:127.0.0.1/detailed?id=1, 產品詳情2的請求爲127.0.0.1/detailed?id=2

       nginx中根據自定義的創建緩存文件規則,會創建一個名爲1和2的文件,個個文件中存放對應的產品靜態頁面。

問題:靜態頁面緩存到nginx後,頁面數據做了修改如何更新到nginx中?

答:修改url地址上的時間戳或者使用Lua+OpenResty動態讀取後臺(京東使用的時間戳方式,通過修改url上的時間戳表示需要重新緩存到nginx),

       nginx緩存的頁面(根據請求地址緩存),如果地址上的時間戳改變就放行去請求後臺返回數據並再次緩存到nginx中。

配置nginx

1. 替換掉nginx.conf配置文件中的內容:

events {
  #的最大連接數(包含所有連接數)1024
  worker_connections  1024;  ## Default: 1024
}

http{

   # 代理緩存配置,meite_cachedata爲緩存存放目錄
   proxy_cache_path "./meite_cachedata"  levels=1:2 keys_zone=meitecache:256m inactive=1d max_size=1000g; 
   server {
     listen 80;
     location /{
        #使用緩存名稱
        proxy_cache meitecache;
		#對以下狀態碼實現緩存
        proxy_cache_valid 200 206 304 301 302 1d;
		#緩存的key(緩存的key爲請求地址)
        proxy_cache_key $request_uri;
        add_header X-Cache-Status $upstream_cache_status;
		#反向代理地址
        proxy_pass http://127.0.0.1:8080;
      }
  
   }
}

 2. 在nginx目錄下創建meite_cachedata文件目錄,用於存放靜態頁面。

測試

nginx端口爲80, tomcat端口爲8080

tomcat中靜態頁面存放的位置:

1. 把靜態html等頁面放到tomcat的webapps目錄下,啓動tomcat,

        即可通過ip+tomcat端口+html在webapps下的路徑127.0.0.1:8080/my/html/index.html,訪問到靜態頁面;

2. 啓動配置好的nginx,通過反向代理請求tomcat啓動的8080端口,

    訪問:127.0.0.1/my/html/index.html 第一次訪問自動緩存頁面到nginx的meite_cachedata目錄中;

 3. 測試是否訪問的nginx緩存,關閉tomcat,再次訪問127.0.0.1/my/html/index.html,發現還是可以訪問;

    OK搞定。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章