所谓缓存,就是为了提高数据的读取效率而存在的东西
浏览器的工作性质:通过网络,向服务器发送请求,获取服务器返回的HTML网页文档,在页面上进行渲染展示
浏览器为了提高客户端打开网页的效率,软件中添加了缓存机制,当用户向服务器发送请求时附带一个当前系统时间,与服务器上的网页的更新时间进行比较,如果这个时间没有发生变化,就直接使用本地缓存的网页数据,直接打开本地计算机上保存的网页(打开网页的速度特别快),如果跟你更新时间发生了变化,就向服务器请求网页数据并覆盖本地存储的数据
本地存储
浏览器软件提供了一个本地存储对象:localStorage可以用于在浏览器缓存空间中,存储指定的key:value的数据,可以很方便的完成数据的存储、读取和删除
API | 说明 |
---|---|
localStorage.setItem(name,value) | 向本地存储中存储一个名称为name,值为value的数据 |
localStorage.getItem(name) | 从本地存储中读取名称为name数据 |
localStorage.removeItem(name) | 从本地存储中删除名称为name数据 |
cookie存储
Cookie是用于在本地计算机中存储用户字符串信息的一个临时空间,当空间中存储的数据一旦超过过期时间就会自动销毁,不同的浏览器软件对于存储的cookie数据的大小也进行了一定的限制,如不能超过4k字节数,不能超过多少个key=value等各种限制
cookie是有大小限制的,每个cookie所存放的数据不能超过4kb,如果cookied字符串的长度超过4kb,则该属性将返回空字符串
cookie有域和路径这个概念,域就是domain的概念,因为浏览器是个注意安全的环境,所以不同域之间是不能互相访问cookie的(可以通过特殊设置达到cookie跨域访问),路径就是routing的概念,一个网页所创建cookue只能被与这个网页在同一目录下得所有网页访问,而不能被其他目录下的网页访问
//向cookie中存储一个数据
document.cookie = 'username=zhangsan'
functionn getCookie(c_name) {
//先查询cookie是否为空,为空就return‘’
if(document.cookie.length>0) {
//通过Strig对象的indexOf()来检查这个cookie是存在,不存在就为-1
c_start = document.cookie.indexof(c_name+'=')
if(c_start!=-1) {
c_start=c_start+c_name.length+1
c_end=document.cookie.indexof(':',c_start)
if(c_end==-1) c_end=document.cookie.length
return
unesacpe(document.cookie.substring(c_start,c_end))
}
}
}