English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

nginxキャッシュがキャッシュしない理由と解決策

nginx.confの一部内容:

  proxy_temp_path  /nginx/キャッシュ/temp;
  proxy_cache_path /nginx/キャッシュ/path levels=1:2 keys_zone=cache_test:2048m inactive=7d max_size=10g;
......
 location ~ .(gif|jpg|jpeg|png)$ {
    proxy_pass http://upstreams;
    proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
    proxy_cache cache_test;
    #キャッシュのキーを設定します
    proxy_cache_key $host$uri$is_args$args;
    #ステータスコードを設定します:200と304のレスポンスはキャッシュ可能で、キャッシュの期間は1日
    proxy_cache_valid 200 304 1d;
    expires 30d;
  }

nginxがキャッシュしない理由

デフォルトでは、nginxがキャッシュするかどうかはnginxキャッシュサーバーとソースサーバーが共同で決定します。キャッシュサーバーはキャッシュするかどうか、およびキャッシュの期間を決定するためにソースサーバーのレスポンスヘッダを厳しく守る必要があります。

ヘッダは以下の通りです:

Cache-control:no-cache、no-store

この二つの値が存在する場合、nginxキャッシュサーバーは絶対にキャッシュしません

Expires:1980-01-01

日付が現在時刻より早い場合でもキャッシュしません。

キャッシュしない解決策

2.1 方法一:

プログラムまたはソースサーバーのウェブプログラムのレスポンスヘッダを変更します

2.2 方法二:

nginx代理に直接以下の一句を加えます:

proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;

きょうじ

このりょくぶんのもとどきです。このりょくぶんがみなさまのがくびつかくかはたらくにちからをもたらすことを願っています。もしこしこんがあがつきましていただけば、りやくごごうでやりとりしてください。

おすすめ