fetchbrand.js 2.4 KB
/**
 * 抓取品牌数据
 * @return {[type]} [description]
 */
function render(template, data) {
	return template.replace(regexp, function(fullMatch, capture) {
		if (data[capture]) {
			return data[capture];
		} else {
			return '';
		}
	});
}

function FetchBrand(params, callback) {
	var request = new XMLHttpRequest();
	request.open('POST', params.url, true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	request.setRequestHeader('Accept', 'application/json, text/javascript');
	request.onreadystatechange = function() {
		if (this.readyState === 4) {
			if (this.status >= 200 && this.status < 400) {
				var resp = this.responseText;
				callback(resp);
			} else {
				return;
			}
		}
	};
	var tempdata = params.data;
	var senddata = '';
	for (var k in tempdata) {
		if (typeof k !== 'undefined') {
			senddata += '&' + k + '=' + tempdata[k];
		}
	}
	senddata = senddata.substr(1);
	request.send(senddata);
	request = null;
}
var memoryCache = {};
var CACHE_TTL = 86400000,
	CACHE_PREFIX = 'brand';
/**
 * 将数据放入缓存
 * @param {[type]} mykey [description]
 * @param {[type]} data  [description]
 */
function setCache(mykey, data) {
	var stamp, obj;
	stamp = Date.now();
	obj = {
		date: stamp,
		data: data
	};

	localStorage.setItem(CACHE_PREFIX + mykey, JSON.stringify(obj));
	memoryCache[mykey] = obj;
}
/**
 * 从缓存取数据
 * @param  {[type]} mykey [description]
 * @return {[type]}       [description]
 */
function getCached(mykey) {
	var key, obj;
	key = CACHE_PREFIX + mykey;
	if (memoryCache[key]) {
		if (memoryCache[key].date - Date.now() > CACHE_TTL) {
			localStorage.removeItem(key);
			delete(memoryCache[key]);
			return false;
		}
		return memoryCache[key].data;
	}
	obj = localStorage.getItem(key);
	if (obj) {
		obj = JSON.parse(obj);
		if (Date.now() - parseInt(obj.date, 10) > CACHE_TTL) {
			localStorage.removeItem(key);
			delete(memoryCache[key]);
			return false;
		}
		memoryCache[key] = obj;
		return obj.data;
	}
}
exports.FetchBrandDataInfo = function(query, data, callback) {
	//var cached;
	//cached = getCached(query + data.data.start + data.data.brandcat);
	//if (cached) {
	//	callback(cached);
	//} else {
	FetchBrand(data, function(datacallback) {
		datacallback = JSON.parse(datacallback);
		if (datacallback.code === 200) {
			callback(datacallback);
			//setCache(query + data.data.start + data.data.brandcat, datacallback);
		}
	});
	//}
};