在JS / REACT

时间:2018-03-31 23:20:33

标签: javascript json reactjs local-storage

我正在创建一个react应用程序,它会定期从URL获取Json对象并显示其内容。 (我正在使用的网址示例:http://demo0046512.mockable.io/stream/anycontent)。

为了提高项目的灵活性,我希望它能够在离线时显示内容。

出于这个原因,当我第一次在该Json对象中获取 url 时,我想存储他们的内容以便以后能够访问它,就像网址一样我离线时没有任何用处。

要存储我正在使用localforage Api的数据,我的想法是创建一个Json对象,就像我提取的那样,但每个url都会被替换为这是内容(文字/图片/视频本身),然后将其存储为localForage,以便在离线时从中进行读取,但到目前为止我还没有找到方法。

例如:{ex1:“https://video.com”}将存储为{ex2:videoItself}

可以这样做吗?

任何感兴趣的人的代码(Ctrl + f并输入“/ * !!”以解决问题)

https://pastebin.com/AagzuGmx

1 个答案:

答案 0 :(得分:-1)

您希望缓存从URL返回的结果。这些价值可能会发生变化吗?如果是这样,您可能希望保留URL;以及从中获取的结果。如果{ex1 : "https://video.com"}然后{"https://video.com": video}

,那就是这样

编辑:

您在缓存这一事实非常重要,包括它可能会发生变化。但我明白你现在的问题是什么。您想使用localForage存储视频等内容。这可以做到,但正如文档所说,"所有类型都支持在每个存储后端,尽管localStorage中的存储限制使得无法存储许多大型Blob。"因此,您提供的视频示例仅适用于小型视频。在移动浏览器上,5MB是限制,由于localStorage的工作方式,你可能甚至没有那么多。它只存储字符串,所以如果字符串存储不佳(并且它们在某些版本的Android浏览器中),那么你可能只获得2.5MB。顺便说一句,这个限制是每个域,而不是文件。

还有一点需要注意:在存储这些文件之前,您必须对这些文件进行编码/序列化。他们只是视频吗?还有图片?媒体与元数据?整个媒体页面?因为你对它们进行编码的方式可能取决于它。如果它只是一种媒体类型,您可以将其编码为文档中的最终setItem示例。然后像示例一样创建一个URI,它可以是src<img>标记的<video>