跳到主要内容

LocalStorage对性能有害吗?

Mozilla的首席传播者Christian Heilmann写了一个功能概述网站本地存储的问题。在内部,他说网络开发人员经常遇到看起来好得令人难以置信的事情,而且我们只是在一段时间后发现我们“做错了”。

他认为localStorage就是这样一个案例;虽然它支持得很好而且很简单,但性能很差。问题:替代方案要么更复杂,要么支持不足。

我们向Heilmann(CH)询问了localStorage及其问题可能如何影响Web应用程序开发的未来。我们还向他询问了浏览器实现的差异是否指向进一步的碎片化以及是否存在问题。

.net:为什么你认为localStorage如此糟糕的话会有如此大的吸引力?简单?支持?
CH:两者都有。它很简单,适用于各种浏览器。几乎每个HTML5教程都涵盖了它。我们希望饼干死掉,这是一个很好的选择。

.net:继续使用localStorage是否会威胁到网络应用程序的转变,从性能角度来看它们似乎是二等公民?
CH:很可能不是。主要论点是localStorage对性能不利,但主要是在过度使用时,以及经常无法访问的页面/应用程序。真正的Web应用程序开发总是倾向于使用数据库解决方案而不是简单的键/值存储。主要性能命中实际上在桌面上可见,而在移动设备上则较少。

.net:你认为用户会注意到这样的性能命中率吗?
CH:是的。如果应用程序锁定几秒钟,则很难不显示它。在某种程度上,转向IndexedDB将是一件好事。虽然在本地为用户存储内容很方便,但如果你不告诉他们,它也会令人毛骨悚然。几乎所有其他API都要求用户对它们说“是” - 例如,地理定位和全屏 - 所以这应该没有任何不同。由于我们没有被问及是否可以存储内容,因此会对用户进行大量跟踪。跟踪应该更加透明。

.net:你在文章中说当地的存储情况让人联想到HTML5视频辩论......
CH:它与实施者的烦恼相当,但不一样。视频辩论是关于编解码器和知识产权的。使用MP4并不意味着从长远来看它是免费的。 WebM / OGG做到了。

.net:但就碎片方面而言-在Web标准和技术的最前沿,这是不可避免的吗?
CH:碎片将永远发生,并且最近变得更糟,因为一些浏览器正在推动在它们上运行操作系统(使用Windows 8的IE和使用Chromebook的Chrome)。浏览器不仅仅是在操作系统中运行的应用程序来显示Web内容 - 它们正在成为主要的操作系统界面层(启动到壁虎就是一个很好的例子)。

这意味着某些人可能需要很长时间才能就标准达成一致并将其全面实施,这就是实验性实施作为规范提案被抛弃的原因。在没有等待反馈或帮助他人实施的情况下,营销机器将它们宣传为“浏览器X中的新酷”,其他人需要跟上。

.net:如何打击和处理这种分裂?
CH:对于Mozilla,主要论点是安全性,隐私性和开放性。如果出现一些新的和酷的东西,这只是一家公司的工作,很难在其他浏览器中实现,或者与API和非开放的内容相关联,我们不乐意支持它。

我们现在拥有的很多东西还没有准备好,需要浏览器制造商之间的协议,但我们需要人们尝试一下,看看它们是如何破解的。

.net:开发人员如何帮助解决这个问题?
CH:我们需要停止使用技术的粉丝,因为他们在我们最喜欢的浏览器中工作,并声称其他人都支持,因为他们不支持他们的功能。过去的成功并不是创新的保证。

例如,Chrome比任何其他浏览器都容易得多 - 它们是第二个实施者,可以从其他人的错误中吸取教训。现在,很容易预测这个浏览器会出现需要讨论和迭代而不是盲目追随者的失败。碎片很好,它允许一些方法,并看看哪个最好。我们只需要找到时间达成共识。

这对开发人员来说可能是令人沮丧的,但如果你对自己诚实,网络开发一直是一个不断变化的目标,你总是要跟上发生的事情!



翻译字数超限