我正在开发HTML5游戏,我需要知道更新localStorage属性是否经常会降低页面速度。
我实际上将我的英雄位置存储在四个localStorage属性中(两个用于实际位置,两个用于在碰撞检测系统中使用的过去位置)并且每隔1秒间隔更新一次,< strong>但我想以60fps 更新它以拯救每一个英雄运动。
在该频率下使用localStorage会导致性能问题吗?
答案 0 :(得分:4)
本地存储将数据存储在用户的硬盘上。读取和写入硬盘驱动器所需的时间比对RAM的要长一些。
从中可以得出结论是,您可以通过在启动时从本地存储中读取来优化性能,并在用户注销时仅向其写入。
现在,无论该优化是否会对您的项目产生重大影响,您都必须弄清楚,并且正如R3tep所说,http://jsperf.com/是一个很好的解决方案。
我的建议是,无论如何都要优化,只是因为它更少&#34;满足&#34;我想,有一个程序运行速度比没有好原因。
答案 1 :(得分:2)
将您的数据保存到对象{}
并将其保存到locatlStorage
,然后使用I / O不活动或当用户离开时(onunload
事件):
var DATA = {},
syncTimer;
function syncFunction () {
localStorage.set('myData',JSON.stringify(DATA));
}
function someHandler() {
// some handler that change your DATA
// which can be called many times per second
//if calling many times, data will not sync
if (syncTimer) {
clearTimeout(syncTimer);
}
//change data
DATA.somefield = 'some data';
//set timer if data not changed - save it
syncTimer = setTimeout(syncFunction, 100)
}
window.onunload = syncFunction;
P.S。 Test通过保存到存储来保存到var。存储同步更加昂贵。