如何清除AngularJS路由之间的浏览器缓存

时间:2017-07-05 06:09:02

标签: angularjs caching browser-cache

在页面之间进行路由时,我尝试了几项清除浏览器缓存的内容。像cache: falseindex.html?x=1target="_self"disableCache: true, in $routeProvider as well。但是这些都没有用for me.finaly $window.location.reload(); working.but我不想每次路由时重新加载页面。在AngulerJs中有路由缓存的完美解决方案吗?

方案

在我的header.htmlng-if="currentPath ==='/store'"。它会检查当前路径,并在store

中显示与header.html相关的一些样式

header.html中

<div class="container" ng-if="currentPath ==='/store'">
    <div class="col-xs-8 buttons" >
      <a class="brand" href="#" target="_self"><img src="img/logo.png" /></a>
      <a class="btns" href="#Store" target="_self">Store</a>
    </div>

<ul class="col-xs-4 icons">
      <li ><a href="#/profile" class="display_name"><i class="fa"></i>{{user.email}}</a></li>
      <li><a href="#/cart"> <span ng-show="cart_size > 0" class="count">{{cart_size}}</span></a></li>
 </ul>
<--some styles for store.......-->
</div>
<div class="container" ng-if="currentPath !=='/store'">
    <div class="col-xs-8 buttons" >
      <a class="brand" href="#" target="_self"><img src="img/logo.png" /></a>
      <a class="btns" href="#Store" target="_self">Store</a>
    </div>

  </div>

当前问题

当我进入store页面时,我必须刷新浏览器以在标题中显示商店样式。 之后进入另一个页面,商店样式仍然显示在header.then我必须再次刷新。 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以尝试

angular.element('html[manifest=saveappoffline.appcache]').attr('content', '');

您要禁用缓存的位置。

manifest属性指定文档缓存清单的位置。

根据w3schools.com

  

HTML5引入了应用程序缓存,这意味着Web应用程序   缓存,无需互联网连接即可访问。

     

应用程序缓存为应用程序提供了三个优点:

     
      
  1. 离线浏览 - 用户可以在离线时使用该应用   速度 - 缓存资源加载速度更快

  2.   
  3. 减少服务器负载 - 浏览器只会从服务器下载更新/更改的资源

  4.         

    清单属性应包含在网络的每个页面上   您希望缓存的应用程序。

         

    清单文件是一个简单的文本文件,列出了资源   浏览器应该缓存以供离线访问。

         

    要了解有关如何创建清单文件的更多信息,请阅读我们的   HTML5应用程序缓存章节。

您可以尝试的另一种解决方案是在角度应用标头上添加以下代码段,以便永远不会缓存您的网页。

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>