localStorage的图片缓存

最近在做一个商城类的网站,其中想到要做图片缓存,刚好看到了localStorage就研究了一下。

不过经过几天的探索,发现这个东东其实并不适合做大型网站,特别是有大量图片的网页的缓存,因为它的最大缓存空间只有5M(没记错的话)。

所以要是项目有很多很多图片就放弃这个家伙把。

因为它目前没用所以要被砍掉了,砍掉前,简单将我做的一些前端代码贴出来,以供将来有需要参考:

/*判断是否支持缓存,支持并且存在缓存的情况下,就从缓存中获得图片内容*/
if(window.localStorage&&localStorage.getItem('ad_img'+browsing_productId)){
	$('#loading1').hide();//加载中的圈圈(这是我的一个动态插件可以忽略)
	var srcStr = localStorage.getItem('ad_img'+browsing_productId);  //这里是从缓存中获得我们保存的内容,键值对的形式
	var imgObj = document.createElement('img');	//创建一个dom元素(图片)
	imgObj.src = srcStr;  //这里为图片元素的src赋值,可以直接得到图片,到底是个什么东西我就不知道了,可能是流什么的
	$('#productIntroduction').append(imgObj);	//将元素添加到页面中去,就可以得到缓存下来的图片了,经过缓存的加载速度会比从服务器下载快一些
/*不支持缓存或者缓存不存在情况下,按照正常流程由服务器获得图片*/
}else{
	$('#productIntroduction').append('<img id="ad_loading" style="display:none" src="/downloadImg.do?fileId='+data.data.product.productFileId+'">');
	//在图片加载完成后执行的脚本(默认从服务器读取的图片是隐藏的,等加载完毕将加载中的圈圈替换掉)
	$('#ad_loading').load(function(){
		$('#loading1').hide();//加载中的圈圈  
		$('#ad_loading').fadeIn(800);	//圈圈淡出效果
		//判断是否支持缓存,支持,就将图片缓存,不支持不作任何操作
		if(window.localStorage){
			localStorage.setItem('product',browsing_productId);
			……//把你需要的东东存到缓存里,下面是创建一个canvas元素用来存将要缓存的图片
			var imgCanvas = document.createElement('canvas'),  
			imgContext = imgCanvas.getContext('2d');  
			//确保canvas元素的大小和图片的尺寸一致  
			imgCanvas.width = this.width;  
			imgCanvas.height = this.height;  
								
			//渲染图片到canvas中  
			imgContext.drawImage(this, 0, 0, this.width, this.height);  
			
			//用data url的形式取出  
			var imgAsDataURL = imgCanvas.toDataURL('image/png');  
				
			//保存到本地存储中  
			try{  
				localStorage.setItem('ad_img'+browsing_productId, imgAsDataURL);  
			}catch(e){  
				console.log('Storage failed: ' + e);  
			}
		}
	});
}


  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HBuilder是一款基于HTML5的移动应用开发工具。它支持使用localStorage来进行本地数据存储操作。localStorage是一种在浏览器中存储数据的方法,可以将数据以键值对的形式保存在客户端的本地存储空间中。通过localStorage,可以在不同的页面或会话中共享和访问存储的数据。 要查看HBuilder中使用localStorage的方法,可以打开开发者工具,然后导航到Application -> Storage -> Local Storage。在这里,你可以查看和编辑存储在localStorage中的数据。 与应用本地数据管理对象相比,localStorage具有一些不同之处。首先,localStorage存储的数据在应用内是跨域可操作的,而应用本地数据则限于当前应用的域。其次,localStorage的数据存储期是持久化的,不会因为应用的关闭而丢失,而应用本地数据只在当前会话中有效。此外,localStorage没有容量限制,可以存储较大的数据量。在HBuilder中,可以通过plus.storage来获取应用本地数据管理对象,该对象提供了更多的功能和方法来管理应用的本地数据。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [localStorage本地存储](https://blog.csdn.net/Hunt_bo/article/details/81431584)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [HBuilder+HTML5 Plus+MUI实现拍照或者相册选择图片上传](https://download.csdn.net/download/servletrequest/10801247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值