浏览器未缓存AJAX GET请求

时间:2020-06-29 15:03:05

标签: caching nginx-config

我正在尝试为慢速API请求配置缓存。我发现默认缓存配置不适用于我的情况。

我的Nginx服务器具有以下配置:

location /api/get_data_from_cache_with_timeout2sec {
    expires 10m;
    proxy_pass http://myapp;
}

服务器响应具有以下标头:

cache-control: max-age=600
expires: Mon, 29 Jun 2020 14:56:31 GMT

然后页面使用此代码发出AJAX请求(这只是一个简单的示例):

jQuery.get('/api/get_data_from_cache_with_timeout2sec', null,
            function(data, status, xhr) {});

我希望它如何工作:

浏览器应识别出应缓存内容。浏览器应该从缓存中获取数据,并且第二个请求(使用浏览器缓存)的速度应该比100ms要快。

工作方式:

每次浏览器都花2秒钟来获取内容,并且浏览器不会尝试为该请求缓存内容,也不会为用户提供缓存中的内容。

我应该对配置或代码进行哪些更改,以使其可以在浏览器中缓存此类请求并使其更快?谢谢!

请找到您可以在其中复制示例页面(只需多次单击“立即检查”按钮): https://www.iwebtool.com/cache_example

1 个答案:

答案 0 :(得分:0)

经过一番调查,我发现应该在浏览器能够缓存ajax请求数据之前执行以下命令:

$.ajaxSetup({ cache: true});

因此,此代码可以正常工作(带有缓存):

$.ajaxSetup({ cache: true});

jQuery.get('/api/get_data_from_cache_with_timeout2sec', null,
            function(data, status, xhr) {});

我希望它会帮助别人。