清单缓存POST请求

taw*_*taw 5 solr http varnish

我正在做的是温和的疯狂,但由于GET请求具有非常严格的大小限制,solr使用POST请求到/solr/selectURL来执行"语义上"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.

我知道所有这些都是相当荒谬的,并且远非任何最佳实践,但无论如何,是否有一种简单的方法以这种方式使用清漆?

ivy*_*ivy 3

您可以尝试将 req.POST 更改为 GET,并将 POST 数据转换为 GET 参数(您可能必须使用内联 C)并进行查找/获取。

HTTP 规范中的 GET 请求限制不一定由 Varnish 或您的后端服务器实现。由于您不依赖于您无法控制的中间缓存和用户代理来处理长网址,因此您可以尝试一下。