我需要在 nginx 上为 python(django) 应用配置缓存。一切正常,但有时我会从缓存中得到空白页。我没有在 nginx 和 uwsgi 日志中看到任何错误。在正常情况下,我HTTP/1.1 200 resposne 24615 bytes
从 nginx 获得较长的数据,但有时它的长度为 20 个字节。
HTTP/1.1 200 0.08 secs: 24615 bytes ==> /
HTTP/1.1 200 0.07 secs: 24615 bytes ==> /
HTTP/1.1 200 7.71 secs: 24615 bytes ==> /
HTTP/1.1 200 0.06 secs: 20 bytes ==> /
HTTP/1.1 200 0.06 secs: 20 bytes ==> /
HTTP/1.1 200 0.07 secs: 20 bytes ==> /
HTTP/1.1 200 7.79 secs: 24615 bytes ==> /
HTTP/1.1 200 0.07 secs: 24615 bytes ==> /
我的缓存配置:
uwsgi_cache_path /var/cache/nginx_cache levels=1:2 keys_zone=my_cache:1m max_size=500m inactive=30m use_temp_path=off;
uwsgi_cache my_cache;
uwsgi_cache_key "$uri";
uwsgi_ignore_headers Cache-Control X-Accel-Expires Expires Vary Set-Cookie;
uwsgi_cache_valid 2s;
并且想想这 20 个字节响应的原因是什么?
答案1
看起来您缓存了 HEAD 响应。根据 nginx 文档 (http://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_methods)HEAD 方法总是被添加到 uwsgi_cache_methods。