一尘不染

防止AngularJS中IE缓存的更好方法?

angularjs

我目前使用service / $
resource进行ajax调用(在这种情况下为GET),并且IE缓存了这些调用,因此无法从服务器检索新数据。我使用了一种通过谷歌搜索发现的技术来创建一个随机数并将其附加到请求中,以便IE不会去缓存数据。

有没有比将cacheKill添加到每个请求更好的方法?

工厂代码

.factory('UserDeviceService', function ($resource) {

        return $resource('/users/:dest', {}, {
            query: {method: 'GET', params: {dest: "getDevicesByUserID"}, isArray: true }
        });

来自控制器的呼叫

$scope.getUserDevices = function () {
        UserDeviceService.query({cacheKill: new Date().getTime()},function (data) {
            //logic
        });
    }

阅读 231

收藏
2020-07-04

共1个答案

一尘不染

根据binarygiant的要求,我将我的评论作为答案。我已经通过在服务器端的响应中添加No-
Cache标头来解决此问题。请注意,您只需要对GET请求执行此操作,其他请求似乎可以正常工作。

binarygiant在node / express上发布了如何执行此操作。您可以像这样在ASP.NET MVC中进行操作:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
public ActionResult Get()
{
    // return your response
}
2020-07-04