首页 文章

将.jpg文件存储在本地存储中

提问于
浏览
5

我试图找到一种方法将.jpg文件从我的网站存储到本地存储中以提高网站速度 . 理论上很简单:将picture.jpg转换为base64字符串,并将其与setitem一起存储到localstorage中 . 再次显示图片只需从localstorage加载base64字符串并解码回jpg . 但是,与往常一样,这种做法更加困难 . 我试图找到一种方法,使用html5或javascript(没有PHP!)即时将.jpg文件转换为base64 . 有人有同样的问题,能够找到解决方案并可以共享代码吗?

4 回答

  • 10

    我也使用支持 offline case 的HTML5缓存清单,专为您的问题而设计 . 不要在base64中使用本地存储,因为:

    • Base64编码增加文件大小to 137% (!)

    • 该算法会降低您的应用程序速度,因为不仅Internet速度限制了您的应用程序,而且还需要javascript .

    • 本地存储不支持evertime,也有限制!

    对于缓存清单,您可以查看w3.org - Cache Manifests也在html5 Rocks上有一个初学者指南 .

    如果你不想使用HTML5 chache manifest,你应该尝试尽可能多地提高速度,在stackoverflow上的很多帖子中描述,我喜欢在about increasing Math Object的帖子中找到the presentation的链接

  • 0

    您可以在支持的地方使用 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

    通过创建缓存清单来使用HTML5缓存可能更好/更容易 .

  • 0

    顺便说一句,谷歌和Bing做了一些测试,试图看看哪种缓存方法更快,这里是results. SPOILER ALERT !!!! localStorage更好 .

相关问题