angularjs IE Cache buster可以工作,但是会违反指令

时间:2014-08-29 08:08:05

标签: javascript angularjs internet-explorer caching

我对IE缓存一切都有问题,所以如果我切换用户,我仍然会看到旧用户的数据已经不再登录了。

我尝试了这个解决方案(发现于:Angular IE Caching issue for $http),它运行但现在我的指令无法获取它需要的模板,我怎样才能让两件事都能正常工作?

代码:

   app.config(['$httpProvider', function ($httpProvider) {
    //initialize get if not there
    if (!$httpProvider.defaults.headers.get) {
        $httpProvider.defaults.headers.get = {};
    }
    console.log($httpProvider.defaults.headers.get['If-Modified-Since']);

    //disable IE ajax request caching
    $httpProvider.defaults.headers.get['If-Modified-Since'] = '0';
}]);

我的指示:

app.directive('commentsContainer', function (commentResource, signalRService) {
return {
    restrict: 'EAC',
    templateUrl: '/Templates/Directives/_Comments.html',
    link: function ($scope) {
         //CODE
    }
}

修改<!/强> 无论使用哪种浏览器都会出现错误,这是Chrome中的一个:

GET http://localhost:58991/Templates/Directives/_Comments.html 400 (Bad Request) 

Error: [$compile:tpload] Failed to load template: /Templates/Directives/_Comments.html

没有用于缓存的角度snippit,它工作正常..

希望你能帮忙!

1 个答案:

答案 0 :(得分:1)

在您提供的资源中,有两种可能的修复方法。

commentLangdon中的第一个解决方案

  

If-Modified-Since标头使IIS + iisnode抛出400 Bad Request   对于通过ngInclude和ngView加载的每个html文件。下列   两个标题虽然为我解决了问题(我从Chrome中删除了它们,   没有缓存问题):

     

$ httpProvider.defaults.headers.get ['Cache-Control'] ='no-cache';   $ httpProvider.defaults.headers.get ['Pragma'] ='no-cache';

comment中的lopisan

中的第二个解决方案
  

使用If-Modified-Since =“0”标题会破坏Tomcat(问题   解析标题日期,因为0不是有效值RFC)。固定使用   价值'星期一,1997年7月26日05:00:00 GMT'而不是。