angular页面缓存与页面刷新

时间:2022-09-08 15:41:47
 
angularJS学习笔记:页面缓存与页面刷新

遇到的问题

现在存在这样一个问题,登录前与登录成功后是同一个页面,只不过通过ngIf来控制哪部分显示,图像信息如下:

angular页面缓存与页面刷新

所以,整体工作不是很难,无非就是页面的布局,不过ionic提供了一套UI,可以很方便的布局到这个程度。

但是,当我布局好,接口也连接上以后,测试才发现有些地方有延迟,就像这样:

这个过程这样解释:

  • 点击“我的”进入个人中心
  • 我没有登录,展示的是未登录页面,点击登录
  • 进入登录页面,输入用户名密码并登录成功,返回主页面
  • 点击“我的”,显示的还是未登录页面!

所以现在问题出来了,在第四步的时候,应该进入的是个人页面,而非未登录状态。

html代码如下:


  1. <div class="my_buttons" ng-if="noLogin">
  2. <div class="row">
  3. <a ng-href="#/login">登录</a>
  4. <a ng-href="#/register">注册</a>
  5. </div>
  6. </div>
  7. <div class="my_photo" ng-if="!noLogin">
  8. <a ng-href="/#/my/{{user.id}}">
  9. <div class="login_logo">
  10. <img src="http://120.24.218.56/static/images/users/{{user.profilePhotoId}}" alt="">
  11. <p ng-bind="user.username"></p>
  12. </div>
  13. </a>
  14. </div>

先说一下最终的解决方法吧,解决方法就是在路由中,进入该页面时,禁止页面缓存。代码如下:


  1. //个人中心
  2. .state('my',{
  3. url:'/my',
  4. cache:'false',
  5. templateUrl:'templates/my.html',
  6. controller:'MyController'
  7. })

知识点解析:缓存

这个问题就是页面的缓存问题,通过查阅书籍可以找到一些解决方法。

一、什么是缓存

一个缓存就是一个组件,它可以透明的存储数据,以便未来可以更快地服务于请求。缓存不需要时常重新计算的数据是安全的,而重新获取数据会导致数据重复。

缓存能够服务的请求越多,整理系统性能就提升得越多。

二、angularJS中的缓存

angularJS提供的内置缓存服务是一个很方便的特性,它让我们能够使用同一机制来缓存自定义的内容。

$cacheFactry简介

$cacheFactory是一个为所有angular服务生成缓存对象的服务。在内部,$cacheFactory会创建一个默认的缓存对象,即使我们并没有显示地创建。

要创建一个缓存对象,可以使用$cacheFactory通过一个ID创建一个缓存:


  1. var cache = $cacheFactory('myCache');

这里定义了一个ID为“myCache”的缓存。这个$cacheFactory方法可以接受两个参数:

1.cacheId(字符串):这个cacheId就是创建缓存时的ID名称,即上面的“myCache”。可以通过get()方法使用缓存名称来引用它。

2.options(对象):这个选项用于指定缓存如何表现。一般情况下,这个选项对象是一个键:capacity(数字),这个容量描述了在任何给定时间要使用缓存存储并保存的缓存键值对的最大数量。

$cacheFactory()方法返回一个缓存数组。

缓存对象

缓存对象自身有下列方法可以用来与缓存交互:

对象的使用方式如下(以info示例):


  1. cache.info()
  1. info():info()方法返回缓存对象的ID,尺寸和选项。
  2. put():put()方法允许我们把任意JavaScript对象值形式的键(字符串)放进缓存中。比如cache.put(“hello”,”world”)
  3. get():get()方法让我们能够访问一个键对应的缓存值。如果找到了这个键,它会返回它的值,如果没哟找到,它会返回undefined。cache.get(“hello”)
  4. remove():remove()函数用于在找到一个键值对的情况下从缓存中移除它。如果没有找到,返回undefined。
  5. removeAll():removeAll()函数用于重置缓存,同时移除所有已缓存的值。
  6. destory():destory()方法用于从$cacheFactory缓存注册表中移除指定缓存的所有引用。

三、$http缓存

angularJS的$http服务创建了一个带有ID为$http的缓存。要让$http请求使用默认的缓存对象很简单:$http方法允许我们给它传递一个cache参数。

也就是说,$http缓存默认是打开的。

当数据不会经常改变时,默认的$http缓存就特别有用了。可以像这样设置它:


  1. $http({
  2. method:"GET",
  3. url:'/api/user',
  4. cache:true
  5. })

或者使用辅助方法.get()


  1. $http.get('/api/user',{
  2. cache:true
  3. })

现在,通过$http到URL /api/user的每个请求将会存储到默认的$http缓存中。这个$http缓存中的请求键就是完整的URL路径。

 
通过在$http选项中传入参数true,可以告诉$http服务使用默认的缓存。如果我们不想经常干扰那些缓存,使用默认缓存时很有用的。

angular页面缓存与页面刷新的更多相关文章

  1. 用angular怎么缓存父页面数据

    angular做单页面应用是一个比较好的框架,但是它有一定的入门难度,对于新手来说可能会碰到很多坑,也有许多难题,大部分仔细看文档,找社区是能解决的. 但有些问题也许资料比较少,最近遇到过一个要缓存父 ...

  2. Nginx特性验证-反向代理&sol;负载均衡&sol;页面缓存&sol;URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  3. 探索ASP&period;NET MVC5系列之~~~5&period;缓存篇(页面缓存&plus;二级缓存)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  4. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

  5. cache-contro页面缓存处理设置

    <meta http-equiv="pragma" content="no-cache">,pragma与no-cache用于定义页面缓存,不缓存页 ...

  6. &lbrack;转&rsqb;MVC3缓存之一:使用页面缓存

    本文转自:http://www.cnblogs.com/parry/archive/2011/03/19/OutputCache_In_MVC3.html 在以前的WebForm的开发中,在页面的头部 ...

  7. Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  8. MVC3缓存之一:使用页面缓存

    MVC3缓存之一:使用页面缓存 在MVC3中要如果要启用页面缓存,在页面对应的Action前面加上一个OutputCache属性即可. 我们建一个Demo来测试一下,在此Demo中,在View的Hom ...

  9. 更新页面缓存OutputCache

    为什么要使用OutputCache 我认为OutputCache是最简单的缓存技术了,它针对的是页面级别的,简单的一条指令就可以达到缓存的效果,有效的减轻服务器的压力和减少带宽,对于网站一些不会频繁更 ...

随机推荐

  1. &lpar;转&rpar; Wp7 list 中列表项多样化的解决方案-Custom DataTemplateSelector

    本文转自: http://www.cnblogs.com/sonyye/archive/2012/03/03/2378825.html 在这篇文章中,我将解释如何在Windows Phone 7中创建 ...

  2. popupwindow展示

    样式: layout: popup_appinfo.xml <?xml version="1.0" encoding="utf-8"?> <L ...

  3. Oracle权限一览表

    权限 所能实现的操作 分析 ANALYZE ANY  分析数据库中的任何表.簇或索引 审计 AUDIT ANY  审计数据库中的任何模式对象 AUDIT SYSTEM  启用与停用语句和特权的审计选项 ...

  4. BZOJ1646&colon; &lbrack;Usaco2007 Open&rsqb;Catch That Cow 抓住那只牛

    1646: [Usaco2007 Open]Catch That Cow 抓住那只牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 634  Solved ...

  5. UML&lbrack;1&rsqb; UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)(转)

    转自:http://blog.csdn.net/zhaoxu0312/article/details/7212152 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是 ...

  6. java的双缓冲技术

    Java的强大特性让其在游戏编程和多媒体动画处理方面也毫不逊色.在Java游戏编程和动画编程中最常见的就是对于屏幕闪烁的处理.本文从J2SE的一个再现了屏幕闪烁的Java Appilication简单 ...

  7. 本文详解5G是个什么鬼,程序员都准备好了吗?

    无线移动通讯发展历史 最近5G的概念炒的如火如荼,为此,华为和高通还干了一仗.这篇文章从技术层面给大家分析,什么是5G,它和4G比,高级在哪里? 我们来看看移动互联网的技术发展: 然后我们在来看看他们 ...

  8. python学习笔记(10)--组合数据类型&lpar;字典类型&rpar;

    理解映射: 映射是一种键(索引)和值(数据)的对应.字典是键值对的集合,键值之间无序.用大括号表示{},和dict()创建,键值对用冒号:表示. {键:值,键:值,键:值} >>> ...

  9. 【洛谷P1082】同余方程

    题目大意:求关于 \(x\) 的同余方程 \[ax \equiv 1 \pmod {b}\] 的最小正整数解. 题解:exgcd 板子题. 代码如下 #include <bits/stdc++. ...

  10. rabbitmq shovel插件

    官网说明https://www.rabbitmq.com/shovel.html#management-status 启用shovel插件命令: rabbitmq-plugins enable rab ...