Nginx变量缓存时间
我目前正在使用Nginx变量缓存时间,nginx,fastcgi,Nginx,Fastcgi,我目前正在使用fastcgi\u cache,希望将一个变量传递给fastcgi\u cache\u valid,以便根据文件拥有可变的缓存时间。但它似乎不会接受一个变量 我尝试了以下方法: set $cache_time 15s; fastcgi_cache_valid 200 ${cache_time}; fastcgi_cache_valid 200 $cache_time; set $cache_time "15s"; fastcgi_cache_valid 200 ${cache_
fastcgi\u cache
,希望将一个变量传递给fastcgi\u cache\u valid
,以便根据文件拥有可变的缓存时间。但它似乎不会接受一个变量
我尝试了以下方法:
set $cache_time 15s;
fastcgi_cache_valid 200 ${cache_time};
fastcgi_cache_valid 200 $cache_time;
set $cache_time "15s";
fastcgi_cache_valid 200 ${cache_time};
fastcgi_cache_valid 200 $cache_time;
set $cache_time 15;
fastcgi_cache_valid 200 ${cache_time}s;
fastcgi_cache_valid 200 $cache_time;
但我收到了以下错误:
nginx: [emerg] invalid time value "$cache_time" in /etc/nginx/conf.d/www.com.conf:118
nginx: [emerg] directive "fastcgi_cache_valid" is not terminated by ";" in /etc/nginx/conf.d/www.com.conf:118
fastcgi\u cache\u valid
不接受变量,但如果只有两个选项cached
和not cached
,则有一个解决方法
在本例中,我们希望cached.php
返回缓存版本,如果url包含参数,则返回非缓存版本。这意味着cached.php
将始终重新返回缓存版本,而cached.php?id=1
将始终返回非缓存版本
location = /cached.php {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
set $disable_cache 1;
if ( $request_uri = "/cached.php" ){
set $disable_cache 0;
}
fastcgi_cache phpcache;
fastcgi_cache_valid 200 1h;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_bypass $disable_cache;
fastcgi_no_cache $disable_cache;
add_header X-Is-Cached "Cache disabled $disable_cache";
}
这是用于测试的cached.php
的内容
<?php echo "The time is " . date("h:i:sa")."\n";?>
curl--head”http://www.example.com/cached.php?id=1“
X-Is-Cached
仅用于调试,不需要。并非所有nginx指令都允许变量。为什么要在这里使用变量?在几个fastcgi后端语句中定义相同的服务器,每个语句都可以有自己的缓存值…@AlexeyTen我希望所有页面的标准缓存时间相对较短。但我有2-3个页面,由于加载需要5秒以上的时间,而且每隔几天或几周就要对内容进行一次非必要的更改,因此缓存时间应该要长得多。您可以通过x-accel-*
标题从fastcgi端控制缓存时间。有关详细信息,请参见nginx文档
HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Thu, 31 Dec 2020 17:07:55 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Fastcgi-Cache: HIT
X-Is-Cached: Cache disabled 0
HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Thu, 31 Dec 2020 17:09:15 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Fastcgi-Cache: BYPASS
X-Is-Cached: Cache disabled 1