我对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,它工作正常..
希望你能帮忙!
答案 0 :(得分:1)
在您提供的资源中,有两种可能的修复方法。
中的第二个解决方案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';
使用If-Modified-Since =“0”标题会破坏Tomcat(问题 解析标题日期,因为0不是有效值RFC)。固定使用 价值'星期一,1997年7月26日05:00:00 GMT'而不是。