我正在做的是温和的疯狂,但由于GET请求具有非常严格的大小限制,solr使用POST请求到/solr/select
URL来执行"语义上"GET.
我试图把清漆放在solr前面做一些缓存.我把它放在vcl_recv
功能中:
if (!(req.request == "GET" || req.request == "HEAD" ||
(req.request == "POST" && req.url == "/solr/select"))) {
/* We only deal with GET and HEAD by default */
/* Modified to support POST to /solr/select */
return (pass);
}
Run Code Online (Sandbox Code Playgroud)
和varnish现在尝试处理它,除了它自动将POST转换为GET.
我知道所有这些都是相当荒谬的,并且远非任何最佳实践,但无论如何,是否有一种简单的方法以这种方式使用清漆?
您可以尝试将 req.POST 更改为 GET,并将 POST 数据转换为 GET 参数(您可能必须使用内联 C)并进行查找/获取。
HTTP 规范中的 GET 请求限制不一定由 Varnish 或您的后端服务器实现。由于您不依赖于您无法控制的中间缓存和用户代理来处理长网址,因此您可以尝试一下。