前端 缓存

一、浏览器机制 cookie,sessionstorage,localstorage

  1.1共同点:都是保存在浏览器端,且同源的。

  1.2区别:

    a)cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递;cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带  cookie,所以cookie只适合保存很小的数据,如会话标识。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

    b)数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。

    c)作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。

    d)挂载的dom对象不同:cookie在document对象下,sessionstorage和localstorage在window对象下

  1.3使用

cookie的属性

1、expires属性
指定了coolie的生存期,默认情况下coolie是暂时存在的,他们存储的值只在浏览器会话期间存在,当用户推出浏览器后这些值也会丢失,如果想让cookie存在一段时间,就要为expires属性设置为未来的一个过期日期。现在已经被max-age属性所取代,max-age用秒来设置cookie的生存期。
2、path属性
它指定与cookie关联在一起的网页。在默认的情况下cookie会与创建它的网页,该网页处于同一目录下的网页以及与这个网页所在目录下的子目录下的网页关联。
3、domain属性
domain属性可以使多个web服务器共享cookie。domain属性的默认值是创建cookie的网页所在服务器的主机名。不能将一个cookie的域设置成服务器所在的域之外的域。
例如让位于order.example.com的服务器能够读取catalog.example.com设置的cookie值。如果catalog.example.com的页面创建的cookie把自己的path属性设置为“/”,把domain属性设置成“.example.com”,那么所有位于catalog.example.com的网页和所有位于orlders.example.com的网页,以及位于example.com域的其他服务器上的网页都可以访问这个coolie。
4、secure属性

 1 console.log(document.cookie);
 2     var func={
 3         getCookie:function(name){
 4             var cookieValue = null;
 5             if (document.cookie && document.cookie != ‘‘) {
 6                 var cookies = document.cookie.split(‘;‘);
 7                 for (var i = 0; i < cookies.length; i++) {
 8                     // var cookie = jQuery.trim(cookies[i]);
 9                     var cookie = cookies[i].replace(/^\s*|\s*$/g,‘‘);
10                     // Does this cookie string begin with the name we want?
11                     if (cookie.substring(0, name.length + 1) == (name + ‘=‘)) {
12                         cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
13                         break;
14                     }
15                 }
16             }
17             return cookieValue;
18         },
19         setCookie:function(name,value){
20             var Days = 30;
21             var exp = new Date();
22             exp.setTime(exp.getTime() + Days*24*60*60*1000);
23             document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
24         },
25         delCookie:function(name){
26             var exp = new Date();
27             exp.setTime(exp.getTime() - 1);
28             var cval=func.getCookie(name);
29             if(cval!=null)
30             document.cookie= name + "="+cval+";expires="+exp.toGMTString();
31         }
32
33     }
34
35         console.log(func.setCookie(‘name‘,‘v_kninkuang‘))
36         console.log(func.getCookie(‘name‘))
37         console.log(func.delCookie(‘name‘))

sessionStorage和localStorage用法一致, 可以使用方法setItem(),getItem()和属性直接赋值,取值的形式进行存取操作,removeItem()和clear()实现delete和清空操作

 1         sessionStorage.setItem(‘key‘, ‘value‘);
 2         sessionStorage.key1=‘value1‘
 3
 4         // Get saved data from sessionStorage 获取值的方式
 5         var key=sessionStorage.getItem(‘key‘);
 6         var key1=sessionStorage.key1;
 7         console.log(sessionStorage,key,key1)
 8         // Remove saved data from sessionStorage
 9         sessionStorage.removeItem(‘key‘);
10
11         // Remove all saved data from sessionStorage
12         sessionStorage.clear();
13         console.log(sessionStorage)

二、 内存存储  jQuery.data() ,angular Server等

编程语言中申明的变量都是存储在内存中的,当我们对变量进行过赋值且变量依然存在(浏览器刷新或关闭变量丢失),就可以对之前的数据进行操作。

jQuery.data()在元素上存放或读取数据,返回jQuery对象。
当参数只有一个key的时候,为读取该jQuery对象对应DOM中存储的key对应的值,值得注意的是,如果浏览器支持HTML5,同样可以读取该DOM中使用 data-[key] = [value] 所存储的值。

 1     <div class="div"></div>
 2     <div class="div1"></div>
 3     <p data-say="world"></p>
 4     <script>
 5         $(".div").data("say", "hello");
 6         $(".div1").data("say", "hello1");
 7         console.log($("div").data(‘say‘))    //获取第一个 dom的data  hello
 8         $("div").removeData("blah");  //移除say
 9         console.log($(‘p‘).data(‘say‘))  //world
10     </script>

注册一个module,下面封装一个服务,通过依赖注入 在controller和指令中使用,service内的数据共享

三、Dom存储  隐藏域,属性,HTML5 data-* 自定义属性  等

1、input hidden, 隐藏域

隐藏域在页面中对于用户是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用;

2、自定义标签属性

时间: 2024-10-07 22:02:21

前端 缓存的相关文章

使用JS实现前端缓存

在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在js对象中,以后需要的时候就不用每次都去请求服务器了.对于那些大量使用数据字典来填充下拉框的页面,这种方法可以极大地减少对服务器的访问.这种方法特别适用于使用iframe的框架. 具体实现思路和方法: 创建一个cache.js文件: 1.前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据: /** * 定义需要在用户登录的时候获取到本地的数据字典类别 */ var clsCodes =

使用Memcached、Spring AOP构建数据库前端缓存框架

数据库访问可能是很多网站的瓶颈.动不动就连接池耗尽.内存溢出等.前面已经讲到如果我们的网站是一个分布式的大型站点,那么使用 memcached实现数据库的前端缓存是个很不错的选择:但如果网站本身足够小只有一个服务器,甚至是vps的那种,不推荐使用memcached,使 用Hibernate或者Mybatis框架自带的缓存系统就行了. 一.开启memcached服务器端服务 如果已经安装了memcached服务器端程序,请确认服务器端服务已开启. 二.引入jar 1.  alisoft-xplat

ahjesus 前端缓存原理 转载

LAMP缓存图 从图中我们可以看到网站缓存主要分为五部分 服务器缓存:主要是基于web反向代理的静态服务器nginx和squid,还有apache2的mod_proxy和mod_cache模 浏览器缓存:包括页面html缓存和图片js,css等资源的缓存 PHP缓存:有很多免费的PHP缓冲加速工具,如apc eaccerlertor等 内存缓存:主要是采用memcache这种分布式缓存机制 数据库缓存:通过配置数据库缓存,以及数据存储过程,连接池技术等 下面重点介绍浏览器缓存原理: 从上图:我们

Memcached与Spring AOP构建数分布式据库前端缓存框架

由于上一篇有介绍了Memcached缓存,并集群部署,这边我们就不介绍,我们直接介绍Memcached与Spring AOP构建分布式数据库前端缓存框架 一.Java 实现Memcached客户端,实现分布式 (1)需要的jar 1)commons-pool-1.5.6.jar 2)java_memcached-release_2.6.3.jar 3)slf4j-api-1.6.1.jar 4)slf4j-simple-1.6.1.jar (2)Java 实现Memcached客户端代码如下:

HTML编程之如何使用JS实现前端缓存

在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在js对象中,以后需要的时候就不用每次都去请求服务器了.对于那些大量使用数据字典来填充下拉框的页面,这种方法可以极大地减少对服务器的访问.因此这种方法特别适用于使用iframe的框架. 具体实现思路和方法如下: 创建一个cache.js文件: 1.前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据: /** * 定义需要在用户登录的时候获取到本地的数据字典类别 */ var clsCode

【js】了解前端缓存,收获不止于此!

了解前端缓存,收获不止于此! 这次我们来讲一下关于前端缓存的问题.感谢赵欢同学提供doc素材. 首先,开局我画了一张图,你会对文章有一个大局了解. 今天讲的是前端缓存. 前端缓存有3大种:如图,分为HTTP缓存.浏览器缓存.应用程序缓存. HTTP缓存 我们先来看HTTP缓存:(做下了解) 分为强缓存与协商缓存. 首先看强缓存: 强缓存之Expires: 值为服务端返回的到期时间,即下一次请求时,请求时间小于服务端返回的到期时间,直接使用缓存数据: 到期时间是由服务端生成的,客户端时间跟服务端时

前端缓存

前端缓存 缓存概述 在计算机领域中,缓存是一项十分重要的技术. 在软件开发,亦或者是在硬件设计开发中,缓存对性能的影响是十分显著的. 学过Java,会知道在Integer的自动装箱中 [-128, 127] 这个范围中的转换会有些特殊的表现,稍加研究源码,会知道这是因为Integer中的缓存类有关(该缓存类会使用数组存储[-128, 127]范围内的常量).当然,在实际开发中,可能存在Redis缓存,框架缓存等. 再有,cpu cache可能是最常听到的一种硬件缓存机制了.对于计算机专业的同学来

【GISER&amp;&amp;前端优化】前端缓存的几种主流选择

这周遇到了一个新需求,产品反馈地图瓦片服务的图片资源没有Http缓存,每次移动地图范围都会向后台发处请求/响应数据,影响了客户端的地图加载体验.所以需要增加这样一种缓存:1)针对同一个请求资源地址URL,首次加载需要缓存数据,后续加载直接读取缓存:2)后台数据发生更新时,需要实时更新缓存: 在完成这个需求之前,我借机补习了一下前端的缓存体系: 一  HTTP缓存 提起前端缓存,首先第一反应就是浏览器自带的缓存机制,通过在Http报文头部中设置一些属性字段,告知浏览器对本次请求响应的资源进行缓存,

前端缓存技术一:使用ETags减少Web应用带宽和负载

介绍 最近,大众对于REST风格应用架构表现出强烈兴趣,这表明Web的优雅设计开始受到人们的注意.现在,我们逐渐理解了"3W架构(Architecture of the World Wide Web)"内在所蕴含的可伸缩性和弹性,并进一步探索运用其范式的方法.本文中,我们将探究一个可被Web开发者利用的.鲜为人知的工具,不引人注意的"ETag响应头(ETag Response Header)",以及如何将它集成进基于Spring和Hibernate的动态Web应用,

前端缓存支持的文件格式及请求方式

1.varnish缓存和cdn缓存只支持get请求,post等其它请求不支持缓存 2.缓存的文件格式:.html,.htm,.json,.jsonp四种文件格式,其它的如.do是动态的请求,不需要缓存 3.varnish缓存是内在缓存,即服务器缓存,必须设置属性:s-maxage(单位:秒) 4.cdn缓存是服务端缓存,必须设置属性:max-age(单位:秒) 5.当不存在cdn缓存时,varnish缓存也不存在?不知道这句话对不