使用postMessage在不同域的iframe中进行localstorage

Dir*_*son 6 javascript browser html5 local-storage

我的问题与使用localStorage性能挫折和可能的解决方法有关.据我所知(并且我对此不太了解),只要在页面上看到对localStorage的引用(编译时间?),它就会阻塞线程并从磁盘读取数据以填充localStorage内存以供参考.或者,如果域过去存储了数据,它可能会在磁盘上查找数据,因此它知道已经在那里使用了localstorage.

在任何一种情况下,由于localstorage api是同步的,它阻止线程从磁盘读取,让我们等待在页面可以执行任何其他操作之前读取数据.假设我们在页面中插入一个iframe,它以不同的域作为源动态加载.如果我们用这个iframe来完成所有的localStorage的阅读和写作通过的postMessage在描述这个帖子,就不会线程只有当我们加载的iframe受阻?这是否为我们提供了使用localstorage的异步方法?还是我完全离开?

Iva*_*zak 2

由于每个窗口和 iframe 都在单独的浏览器执行上下文中运行(即它们都同时执行)——那么是的,这应该会让您通过 postMessage 异步 localStorage。显然,从不同域加载 iframe 与从同一域加载 iframe 可能会对系统的安全性产生影响。虽然 postMessage 确实可以跨域工作,但我宁愿从我完全信任的域(即我自己的域)加载此 iframe。