Nginx Fastcgi缓存使用不同的请求工具为同一页面创建多个缓存文件

时间:2020-06-05 15:12:46

标签: nginx caching scrapy fastcgi

在装有Nginx的服务器上有一个非常模棱两可的问题,该服务器上装有用于请求页面的静态缓存的fastcgi缓存。

一切正常,但我注意到当您从其他工具(例如浏览器,通过wget-curl请求或通过SCRAPY搜寻器)请求特定页面时,尽管事实如此,Nginx fastcgi缓存仍会在set文件夹中创建不同的文件页面相同。

因此,我尝试分析通过fastcgi_cache_path设置的文件夹中创建的文件的差异,最初我注意到当通过浏览器(Mozilla,chrome)请求页面时,创建的文件被压缩为gzip而当我使用经典的wget-curl请求或SCRAPY时,fastcgi缓存创建的文件未压缩。

所以我认为这是原因,但是当我尝试通过SCRAPY使用指令“'Accept-Encoding:gzip'”发出请求时,我注意到尽管2个文件的大小和大小相同,但它仍然创建了两个不同的文件。也是标题部分相同。

所以我不明白为什么Nginx fastcgi缓存会为使用的每种工具创建不同的文件,这显然导致了这样一个事实,即尽管已经缓存了页面,但在请求页面时,会在缓存文件夹中再次创建相同的页面。案例/run/nginx-cache

我的目标是通过Scrapy搜寻器创建一个缓存预加载系统,然后请求所有页面,以便立即为所有页面创建缓存,而不是等待页面的第一次访问,而是在请求所有页面之后页并确认所有静态文件均已创建,当我尝试通过浏览器检查该页的第一个请求是否已被缓存时,我意识到该缓存的页面未返回(MISS),而是再次被请求并创建。 / p>

为什么会这样,Nginx fastcgi缓存是否具有允许您根据请求类型创建不同缓存的任何设置?

我可以解决此问题以设置Nginx的某些设置或在Scrapy中进行某些设置?

这是我的fastcgi.conf

# FastCGI cache settings
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:50m inactive=720h max_size=256M;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503;
fastcgi_cache_lock on;
fastcgi_cache_lock_age 5s;
fastcgi_cache_lock_timeout 5s;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_background_update on;
fastcgi_cache_valid 200 24h;
fastcgi_cache_valid 301 302 30m;
fastcgi_cache_valid 499 502 503 1m;
fastcgi_cache_valid 404 1h;
fastcgi_cache_valid any 1h;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SERVER_NAME $http_host;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_keep_conn on;
# only available with Nginx 1.15.6 and earlier
fastcgi_socket_keepalive on;

0 个答案:

没有答案