gpt4 book ai didi

javascript - 如何强制 jQuery 向服务器发出 GET 请求以刷新缓存资源

转载 作者:行者123 更新时间:2023-11-30 05:44:12 24 4
gpt4 key购买 nike

关于如何防止 jQuery AJAX 请求被缓存,网络上有很多答案。 这不是我想要做的。

我需要根据代码中的条件从缓存中返回 AJAX 请求。也就是说,当页面加载期间发出请求时,返回缓存的响应是完全可以的(实际上就是这个意图)。但是当用户单击一个按钮时,我需要从服务器刷新相同的请求。

我知道我可以通过在 jQuery 中设置 cache: false 选项来做到这一点,但这只会请求具有不同 URL 的数据,因此不会在缓存中和下一页刷新响应使用 cache: true 加载请求将返回过时的数据。

我尝试在请求中添加一个 Cache-Control header ,但这至少在 IE10 中没有效果。

$.ajax({
url: Configuration.ApiRootUri + "Notifications",
type: "GET",
headers: { 'Cache-Control': refreshCache ? 'no-cache' : 'private' },
success: function(data) {}
});

是否有可能强制浏览器从脚本刷新缓存资源?

最佳答案

(注:在评论中讨论后重写)

一种解决方案是将来自服务器的响应存储在本地存储中,并在页面加载时加载它(如果存在)。

这完全避免了在启动时向服务器发出的请求,并充当缓存,但在浏览器中。

这是一个伪算法示例:

function loadRequest(){
Call Ajax request
On success, store the result in the localstorage, call updateHtml(result);
}

function updateHtml(data) {
Update the specific html (list, view, etc) with the data
}

$('#mybutton').on ('click', loadRequest);

$(function() {
Check if the data in the localstorage exists
if exists, call updateHtml(localstorage.value);
else call loadRequest
});

就是这样!

关于javascript - 如何强制 jQuery 向服务器发出 GET 请求以刷新缓存资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com