繁体   English   中英

使用postMessage在不同域的iframe中进行本地存储

[英]localstorage in iframe of different domain using postMessage

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM