你的分享就是我们的动力 ---﹥

localStorage的大小限制

时间:2011-12-21 09:17来源:www.chengxuyuans.com 点击:

标准建议对于每个domain,localStorage大小为5M,达到限制时浏览器可以去问用户是否允许增加存储空间。

然后,我想看看浏览器具体能保存多少个字符,所以就有了以下的测试。

 

测试环境:

IE 9

firefox 8.0.2

chrome 16.0

safari 5.1

opera 11.60

 

测试代码:

<!DOCTYPE html>

<html>

<head>

    

</head>

<body>

<div id="output"></div>

<script>

function log( msg ) {

    document.getElementById( 'output' ).innerHTML += msg + '<br>';

}

 

var limit;

 

var half = '1'; //这里会换成中文再跑一遍

var str = half;

var sstr;

 

while ( 1 ) {

    try {

        localStorage.clear();

        str += half;

        localStorage.setItem( 'cache', str );

        half = str;

    } catch ( ex ) {

        break;

    }

}

 

var base = str.length;

var off = base / 2;

var isLeft = 1;

 

while ( off ) {

    if ( isLeft ) {

        end = base - (off / 2);

    } else {

        end = base + (off / 2);

    }

    

    sstr = str.slice( 0, end );

    localStorage.clear();

    try {

        localStorage.setItem( 'cache', sstr );

        limit = sstr.length;

        isLeft = 0;

    } catch ( e ) {

        isLeft = 1;

    }

 

    base = end;

    off = Math.floor( off / 2 );

}

 

log( 'limit: ' + limit );

 

</script>

</body>

</html>

 

测试结果:

对英文字符和中文字符来说,测试结果并无变化,所以存储格式可能为UTF16。

以下为测试数据(key有5个字符)

 

IE 9          > 4999995 + 5 = 5000000

firefox 8.0.2 > 5242875 + 5 = 5242880

chrome  16.0  > 2621435 + 5 = 2621440

safari  5.1   > 2621435 + 5 = 2621440

opera   11.60 > 1966068 + 5 = 1966073


opera的测试数据真是让人不能理解……

阅读全文
类别:web浏览器端开发 查看评论

本文地址http://www.chengxuyuans.com/web_technology/34807.html