我正在尝试找到一种方法将.jpg文件从我的网站存储到本地存储中以提高网站速度。 理论上很简单:将picture.jpg转换为base64字符串,并将其与setitem一起存储到localstorage中。再次显示图片只需从localstorage加载base64字符串并解码回jpg。但是,与往常一样,这种做法更加困难。我试图找到一种方法,使用html5或javascript(没有PHP!)将.jpg文件即时转换为base64。有人遇到同样的问题,能够找到解决方案,并可以共享代码吗?
答案 0 :(得分:10)
我也使用支持离线情况的HTML5缓存清单,专为您的问题而设计。不要将本地存储与base64一起使用,因为:
对于缓存清单,您也可以w3.org - Cache Manifests查看html5 Rocks是否有初学者指南。
如果你不想使用HTML5 chache manifest,你应该尝试尽可能地提高速度,在stackoverflow上的很多帖子中有描述,我喜欢帖子中the presentation的链接{{3 }}
答案 1 :(得分:2)
您可以在支持的地方使用canvas
元素和toDataURL
方法。这样的事情:
var ctx = canvas.getContext("2d");
var img = new Image();
img.onload = function() {
canvas.width = this.width;
cavans.height = this.height;
ctx.drawImage(this, 0, 0);
var base64jpeg = canvas.toDataURL("image/jpeg");
}
img.src = "/images/myjpeg.jpg";
但是如果你想这样做“提高网站速度”,请使用HTML5清单进行缓存:它的设计完全是为了这个目的(当然还有离线应用)。
答案 2 :(得分:0)
通过创建缓存清单来使用HTML5缓存可能更好/更容易。
答案 3 :(得分:0)
顺便说一下,localStorage is better than browser cache. Google和Bing做了一些测试,试图查看哪种缓存方法更快,这里是results. SPOILER ALERT !!!! localStorage更好。