gpt4 book ai didi

javascript - AngularJS 的 REST 服务缓存策略

转载 作者:搜寻专家 更新时间:2023-11-01 04:41:15 24 4
gpt4 key购买 nike

我有一个 AngularJS 应用程序,我想缓存 REST 服务响应。我找到了一些图书馆,比如 angular-cached-resource这可以通过将数据存储到网络浏览器的本地存储中来实现。

但有时我会执行一些 POST/PUT/DELETE REST 调用,然后需要再次执行一些 REST 之前缓存的服务响应。所以似乎可以删除缓存的响应,下次调用将发送到服务器。

但是,如果服务器在 HTTP header 中向我发送一些值,如 expiresetag 怎么办?我必须自己阅读 HTTP header 并使用react,或者 AngularJS 中是否有一个库也可以处理这个问题?

因此,如果我应该访问服务器而不是读取本地存储的缓存,则取决于 HTTP header 缓存字段,以及是否有任何 PUT/POST/DELETE 调用具有响应,例如“重新加载每个用户需要设置元素”。所以我必须接受这个响应并创建一个映射,它告诉我例如 REST 服务 A、C 和 F(用户设置相关的东西)需要在下次执行时再次访问服务器,或者如果缓存从 HTTP 过期 header 。

AngularJS 库是否可以做到这一点,或者您有任何其他建议吗?我认为这类似于 Observer 或 PubSub 模式,不是吗?

还有一件事:是否也可以在不使用缓存/本地存储的情况下拥有像 PubSub 这样的东西(因此也没有 HTTP header 缓存控件)?所以我不能调用 REST 服务,因为那样它会命中服务器,这在某些情况下是我不希望的(来自先前 REST 调用的响应返回事件“每个用户设置元素的重新加载”)。

最佳答案

你可以尝试这样的事情。

app.factory('requestService', ['$http', function ($http) {

var data = {};

var service = {
getCall : funtion(requstUrl, successCallback, failureCallback, getFromCache){
if(!getFromCache){
$http.get(requstUrl)
.success(function(data){
successCallback(data);
data.requstUrl = data;
})
.error(function(){
failureCallback(data);
})
}else{
successCallback(data.requstUrl);
}
},
postCall : function(requestUrl, paramToPass, successCallback, failureCallback, getFromCache){
if(!getFromCache){
$http.post(requestUrl, paramToPass)
.success(function(data){
successCallback(data);
data.requstUrl = data;
})
.error(function(data){
failureCallback(data);
})
}else{
successCallback(data.requstUrl);
}
}
};

return service;
}]);

这只是我为实现您的概念而编写的简单代码。我没有测试过它,一切都是你的。

关于javascript - AngularJS 的 REST 服务缓存策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27364805/

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