在浏览器的缓存数据的方式除了cookie之外,还可以有其他方法,但各个浏览器的支持的方法不一样,比如ie就不支持localstorage,写了一个util来屏蔽浏览器中实现缓存的差异,但是有些差异是不可避免的,比如存储的大小。
/**
* 根据浏览器的类型,判断出存储数据的方式
* @enum {number}
*<pre>
*[saveType = 1] 利用localStorage 的方式存储数据
*[saveType = 0] 利用userdata 方式存储数据 ie 浏览器
*</pre>
*/
var saveType = 2, uniqueinstance, object,_OTos = Object.prototype.toString, _oArray = "[object Array]", _oObject = "[object Object]";
/**
* ie 中保存数据
* @param args {object}
* <pre>
* {
* file : '', IE6浏览器的域对象 一个对象中只能使用一次第二次使用将覆盖原始值,其他浏览器中该值无效
* key : '', 键的名称
* content : object 值的内容 类型可以是number object array string
* }
*</pre>
*/
function _saveIEData(args){
var content = args.content, key = args.key, vtype;
vtype = _OTos.apply(content);
if (vtype == _oArray || vtype == _oObject){
content = JSON.encode(content);
}
object.setAttribute(key, content);
object.save(args.file);
}
function _loadIEData(args){
/**
* 读取数据的类型
* {string|object|array}
*/
var type = args.type, file = args.file, content;
object.load(file);
content = object.getAttribute(args.key);
if (type == "array" || type == "object"){
content = JSON.decode(content);
}
return content;
}
function _deleteIEData(args){
var file = args.file;
object.load(file);
object.expires = new Date(315532799000).toUTCString();
object.save(file);
}
/**
* 利用localstorage 存储 读取 数据
*/
function _saveCommonData(args){
var content = args.content, k = args.key, vtype ;
vtype = _OTos.apply(content);
if (vtype == _oObject || vtype == _oArray){
content = JSON.encode(content);
}
localStorage[k] = content;
}
function _deleteCommonData(args){
localStorage.removeItem(args.key);
}
function _loadCommonData(args){
var type = args.type , key = args.key, avalues = localStorage.getItem(key);
if (type == "array" || type == "object"){
avalues = JSON.decode(avalues);
}
return avalues;
}
/**
* 真实的localstorage对象
* 初始化时判断使用localstorage的方式根据浏览器的版本选择
* 当没有浏览器支持该对象时返回一个null 对象
*/
function constructor(){
if (typeof localStorage != "undefined"){
saveType = 1;
}
else if(typeof MT.DOC.documentElement.style.behavior != undefined){
saveType = 0;
if(typeof object == "undefined"){
object = MT.DOC.documentElement;
object.style.behavior = "url('#default#userdata')";
}
}
else{
return null;
}
this.constructor = LocalStorage;
this.saveData = function(args){
this.saveData = saveType ? _saveCommonData : _saveIEData;
this.saveData(args);
};
this.loadData = function(args){
this.loadData = saveType ? _loadCommonData : _loadIEData;
return this.loadData(args);
}
this.deleteData = function(args){
this.deleteData = saveType ? _deleteCommonData : _deleteIEData;
this.deleteData(args);
}
}
var LocalStorage = {
/*
* @memberof LocalStorage
* 惰性实例化 单例
*/
getInstance: function(){
if(!uniqueinstance){
uniqueinstance = new constructor();
}
return uniqueinstance;
}
}
分享到:
相关推荐
浏览器缓存将文件保存在客户端,好的缓存策略可以减少对网络带宽的占用,可以提高访问速度,提高用户的体验,还可以减轻服务器的负担。因此我们有必要了解它的实现原理,用来提高网站的性能。 当一个客户端请求web...
浏览器缓存 浏览器缓存主要可以分为两大类:客户端缓存和服务端缓存。客户端缓存,即浏览器缓存,是本文主要讨论的内容。而服务端缓存则主要包括代理服务器缓存和反向代理服务器缓存,以及广泛使用的CDN等。这些...
主要介绍了JavaWeb如何实现禁用浏览器缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一、概述 缓存的思想可以应用在软件分层的各个层面。它是一种内部机制,对外界而言,是不可感知的。 数据库本身有缓存,持久层也可以缓存...二、缓存实现(浏览器缓存当前访问的JSP动态页面) (一)、服务端方法: 代
可以实现浏览器或者HTML5+APP在无网络下离线存储数据。可以实现浏览器或者HTML5+APP在无网络下离线存储数据。
(1)禁止浏览器缓存所有动态页面; (2)有3个http响应头字段可以禁止浏览器缓存当前页面,它们在Servlet中的示例代码如下。 response.setDateHeader("Expires",-1); response.setHeader("Cache-Control","no-cache...
主要介绍了微信浏览器取消缓存的方法,本文使用meta头信息实现取消了微信浏览器的缓存,特别是在开发时会经常用到,需要的朋友可以参考下
主要介绍了基于nginx设置浏览器协商缓存过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了JSP实现屏蔽浏览器缓存的方法,实例分析了两种屏蔽浏览器缓存的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
当浏览不同Url时,浏览器会自动将当前访问的地址进行一次缓存;而第二次访问时着调用缓存下来的页面,从而达到页面快速加载(页面加载优化)的目的; 因此,我们可以给页面后面设定个不同的值,让页面保持没错访问的...
页面缓存在有的时候是不需要的,我们可以禁止浏览器缓存页面。 在PHP中可以轻松的使用下面的语句实现禁止页面缓存,但比较难记特整理下,方便大家使用。 php代码如下: 复制代码 代码如下:<?php // 设置此页面的...
VMLogin可在同一个电脑上生成多个物理隔离并且防关联的反指纹...再结合代理给每个浏览器单独配置一条IP,就可以模拟任何国家地区的电脑和手机端的浏览器,真正实现一台电脑即可同时多开不同指纹信息的防关联浏览器。
主要介绍了node.js实现http服务器与浏览器之间的内容缓存操作,结合实例形式分析了node.js http服务器与浏览器之间的内容缓存原理与具体实现技巧,需要的朋友可以参考下
《基于Python中PyQt5实现简易浏览器的设计与实现.docx》万字、已降重、毕业论文、本科,目录如下,希望对你有所帮助: 第一章 前言 1.1 研究背景 1.2 研究目的与意义 1.3 研究内容与方法 1.4 论文结构 第二章 PyQt5...
代码说明如何实现webgl帧缓存。里面包含了HTML,JS, GLSL的代码。
统分区,连浏览器的缓存以及用户数据文件都会在系统分区里,对于一些不喜欢将程序安装在 系统分区或者系统分区较小的用户来说非常不人性化。尤其是对于使用固态硬盘做系统盘以及 想要实现关机即删除缓存的用户来说更...
浏览器实现收藏夹过滤器主页设置清空缓存功能
目前实现的功能主要是浏览wap网页,玩wap游戏,偷菜等,下载wap资源等功能。电脑版wap浏览器是一个人独立开发完成的,完全利用个人业余时间与精力进行电脑版wap浏览器的开发工作。面对目前中文市场上电脑版wap浏览器...