在Laravel Ajax视图响应中禁用缓存

时间:2017-09-04 14:46:23

标签: php ajax laravel caching laravel-5

我目前正在使用Laravel 5.3并且有一个视图,一旦用户导航到该页面。

我遇到的问题是我的AJAX功能运行正常但是当我再次过滤用户详细信息时,我总是得到之前的响应,而不是我的新数据......

我向一个控制器函数发出一个AJAX请求,该函数返回一个渲染视图,然后在我的JavaScript中设置如下:

    function loadUserDetails (selectedDetails)
    {
            $('#user-details-container').html("");

            var url = '{{ route('user.details') }}';

            $.ajax({
                type: "POST",
                url: url,
                data: {
                    details: selectedDetails,
                },
                success: function(data) {
                    var loadedHtml = data.html;
                    $('#user-details-container').html(loadedHtml);
                }
            });
    }

然而,在我的Laravel控制器中,我得到了UserDetails并实际渲染了我的视图。我通常会正常设置我的视图,但这是我尝试将渲染视图作为JSON响应返回的方式。

$returnHTML = view('user-details')->with('userDetails', $userOverview)->render();
    $headers = ['Cache-Control' => 'no-cache, no-store, must-revalidate'];
    return response()->json(array('success' => true, 'html'=>$returnHTML), 200, $headers);

我的目标是删除此视图的服务器端缓存,因为用户可以使用不同的参数再次执行此请求,我尝试使用header()但这不起作用...

  //set headers to NOT cache a page
    header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
    header("Pragma: no-cache"); //HTTP 1.0
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

我只是想知道如何删除Laravel在此路由上实施的服务器端缓存?由于用户需要能够过滤用户详细信息,因此响应必须不同,而不是缓存响应。

感谢任何帮助。

0 个答案:

没有答案