我正在尝试集成wordpress插件(Jetpack的Related Posts模块),该插件将查询字符串添加到帖子URL的末尾.我想使用FastCGI缓存URL,而完全忽略查询字符串/ $args.
我当前的配置是:fastcgi_cache_key“ $scheme $request_method $host $request_uri”;
我知道使用the solution mentioned here关闭包含某些$arg的URL的$skip_cache变量,它可以工作.但是,无论$args的值如何,我都希望缓存相同的结果,而不是为每组$args使用唯一的缓存键.
我也知道some suggestions在fastcgi_cache_key中只使用$uri而不是$request_uri;但是,由于$uri不仅是原始请求的URI减去$args,因此wordpress体系结构中的某些内容(可能是漂亮的链接)会强制所有请求的URI返回相同的缓存结果(而不是每个页面都返回不同的结果).
有什么方法可以真正使用最初请求的URI,而不必在缓存键中包含$args?
解决方法:
http {
...
map $request_uri $request_path {
~(?<captured_path>[^?]*) $captured_path;
}
...
}
然后,您将获得一个变量$request_path,其中包含$request_uri,而没有query_string.
因此,使用$request_path作为缓存键
fastcgi_cache_key "$scheme$request_method$host$request_path"
重要. “ map”伪指令只能添加到“ http {}”中.该指令将对所有主机的所有请求执行.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。