博客優化-使用nginx緩存服務器上的靜態文件html

 一、nginx緩存的優點
 4ce24c67a0dc48c285a933d8ebd31abe.png 

原因是前段時間博客做了全面的靜態化處理, 所有詳情及首頁都是靜態化html, 想着是不是可以通過nginx直接緩存html. 有了請求直接nginx去處理, 可以一定程度上減少web服務器的處理請求壓力.

 二、如何進行設置

先上個栗子:

http{
    proxy_connect_timeout 10;
    proxy_read_timeout 180;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 96k;
    proxy_temp_file_write_size 96k;
    proxy_temp_path /tmp/temp_dir;
    proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;


    server {
        listen       80 default_server;
        server_name  localhost;
        root /blog/;

        location / {

        }

        # 靜態文件html緩存
        location ~ /archives/.*\.html$ {
              proxy_pass http://127.0.0.1:8000$request_uri;
              proxy_redirect off;
              proxy_cache cache_one;
              proxy_cache_valid 200 304 12h;
              proxy_cache_valid 301 302 1d;
              proxy_cache_valid any 5m;
              expires 1d;
              add_header wall  "hey, nginx靜態文件緩存";
        }
}

接下來講一下配置項:

2.1 http層設置

    proxy_connect_timeout 10;
    proxy_read_timeout 180;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 96k;
    proxy_temp_file_write_size 96k;
    proxy_temp_path /tmp/temp_dir;
    proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
  • proxy_connect_timeout 服務器連接的超時時間
  • proxy_read_timeout 連接成功後,等候後端服務器響應時間
  • proxy_send_timeout 後端服務器數據回傳時間
  • proxy_buffer_size 緩衝區的大小
  • proxy_buffers 每個連接設置緩衝區的數量爲number,每塊緩衝區的大小爲size
  • proxy_busy_buffers_size 開啓緩衝響應的功能以後,在沒有讀到全部響應的情況下,寫緩衝到達一定大小時,nginx一定會向客戶端發送響應,直到緩衝小於此值。
  • proxy_temp_file_write_size 設置nginx每次寫數據到臨時文件的size(大小)限制
  • proxy_temp_path 從後端服務器接收的臨時文件的存放路徑
  • proxy_cache_path 設置緩存的路徑和其他參數。被緩存的數據如果在inactive參數(當前爲1天)指定的時間內未被訪問,就會被從緩存中移除

2.2 server層設置

2.2.1 緩存代理服務器

    server {
        listen       80 default_server;
        server_name  localhost;
        root /mnt/blog/;

        location / {

        }

        # 靜態文件html緩存
            location ~ /archives/.*\.html$ {
                  proxy_pass http://127.0.0.1:8000$request_uri;
                  proxy_redirect off;
                  proxy_cache cache_one;
                  proxy_cache_valid 200 304 12h;
                  proxy_cache_valid 301 302 1d;
                  proxy_cache_valid any 5m;
                  expires 1d;
                  add_header wall  "hey, nginx靜態文件緩存";
            }
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  • /archives/.*\.html$ 這裏說是正則訪問/archives/以.html結尾的url進行匹配
  • proxy_pass nginx緩存裏拿不到資源,向該地址轉發請求,拿到新的資源,並進行緩存
  • proxy_redirect 設置後端服務器“Location”響應頭和“Refresh”響應頭的替換文本
  • proxy_set_header 允許重新定義或者添加發往後端服務器的請求頭
  • proxy_cache 指定用於頁面緩存的共享內存,對應http層設置的keys_zone
  • proxy_cache_valid 爲不同的響應狀態碼設置不同的緩存時間
  • expires 緩存時間

這裏我設置了詳情頁html靜態資源進行緩存。
當用戶輸入https://chenyinren.top/archives/94.html時,解析得到訪問地址。所以頁面請求會被當前server截取到,進行請求處理。
當解析到上述文件名結尾的靜 態資源,會到緩存區獲取靜態資源。
如果獲取到對應資源,則直接返回數據。
如果獲取不到,則將請求轉發給proxy_pass指向的地址進行處理。

三、如何驗證緩存是否有效

細心的應該發現,在第二段栗子裏,留了個彩蛋 add_header wall "hey, nginx靜態文件緩存";
add_header是用於在報頭設置自定義的信息。
所以,如果緩存有效的話,那麼靜態資源返回的報頭,一定會帶上這個信息。

訪問https://chenyinren.top/archives/94.html結果如下:

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