datacache.js

来自「JSVM核心类库,收集了JAVA进行JSVM开发必用技术进行归纳,在实际项目应用」· JavaScript 代码 · 共 75 行

JS
75
字号
// Description:	js.io.DataCache 类 用户在客户端的数据存储对象
// Author:	Changhua.Wan
// Version:	2004.03.06.01

_package("js.io");

_import("js.io.UserData");
_import("js.util.Hashtable");

function js.io.DataCache(name) {

	js.io.DataCache._base.call(this);
	this.name = name;
	var cache1 = new js.util.Hashtable();
	var cache2 = new function() {
		var ud = js.io.UserData.getInstance(this.className + "[" + name + "]");
		var lm = ud.getStringValue("Last-Modified");
		if (lm == null) {
			ud.setStringValue("Last-Modified", new Date().getTime());
			ud.save();
		}
		this.get = function(_name) {
			var _value = ud.getStringValue(_name);
			return _value;
		};
		this.put = function(_name, _value) {
			ud.setStringValue(_name, _value);
			ud.save();
		};
		this.remove = function(_name) {
			ud.remove(_name);
			ud.save();
		};
		this.clear = function() {
			ud.removeAll();
			ud.save();
		};
	}
	this.get = function(_name) {
		var _value = cache1.get(_name);
		if (_value != null) return _value;
		_value = cache2.get(_name);
		cache1.put(_name, _value);
		return _value;
	};
	this.put = function(_name, _value) {
		cache1.put(_name, _value);
		cache2.put(_name, _value);
	};
	this.remove = function(_name) {
		cache1.remove(_name);
		cache2.remove(_name);
	};
	this.clear = function() {
		cache1.clear();	
		cache2.clear();
	};
};

var _p = js.io.DataCache._extends("js.lang.Object");

js.io.DataCache.map = new js.util.Hashtable(); // DataCache 池定义
js.io.DataCache.getInstance = function(name) {
	try {
		var map = js.io.DataCache.map;
		if (typeof(name) == "undefined") name = "instance";
		if (!map.containsKey(name))
			map.put(name, new js.io.DataCache(name));
		var ud = map.get(name);
		return ud;
	} catch(ex) {
		return null;
	}
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?