使用Varnish Cache进行AJAX GET请求

时间:2015-11-11 04:08:44

标签: ajax wordpress varnish varnish-vcl

我在带有清漆的服务器上运行了一个AJAX请求。请求如下:

    (function() {
        $("#name").autocomplete({
            minLength:3, //minimum length of characters for type ahead to begin
            source: function (request, response) {
                $.ajax({
                    type: 'GET',
                    url: php_vars.var_1, //your server side script
                    dataType: 'json',
                    data: {
                        postcode: request.term
                    },

                    success: function (data) {
                        alert("Success");
                    }
                });
            }
        });
})();

对于url,我使用wp_localize_scripts和数组与php脚本的绝对URL。我在这个脚本之前安慰了这个url,没关系。

我在没有运行清漆的服务器上进行此设置,并且工作正常。但是在我的带有清漆的服务器上,我注意到请求URL不正确(应该是“auspost.php”,而是带有查询参数的页面URL)。在我的无清漆服务器上,GET请求网址是正确的。

看起来清漆正在缓存我的GET请求。任何建议将非常感谢!如果需要,我可以粘贴我的vcl配置吗?

1 个答案:

答案 0 :(得分:1)

For ajax requests you should have the following header available X-Reqeusted-With: XMLHttpRequest

In your varnish vcl_recv you can check if this header is present and force a pass.

if (req.http.X-Requested-With == "XMLHttpRequest"){
return (pass);
}