Leaflet 使用PockDB作为脱机光栅地图缓存

Leaflet 使用PockDB作为脱机光栅地图缓存,leaflet,pouchdb,Leaflet,Pouchdb,我一直在探索使用PockDB作为光栅地图分幅的脱机缓存。特别是传单。我刚刚完成了一些我想与大家分享的初步测试。我创建了一个“JSFIDLE”(实际上我现在更喜欢CodePen),作为展示如何使用PockDB缓存离线光栅地图分幅的游乐场 它使用的算法如下所示: 测试是否存在XHR2、IndexedDB和铬(不含 二进制blob,但Base64)。并显示此状态信息 从GoogleDrive获取PNG tiles的JSON清单(我有171个PNG) 瓷砖,每个尺寸为256x256)。清单上列出了他们

我一直在探索使用PockDB作为光栅地图分幅的脱机缓存。特别是传单。我刚刚完成了一些我想与大家分享的初步测试。

我创建了一个“JSFIDLE”(实际上我现在更喜欢CodePen),作为展示如何使用PockDB缓存离线光栅地图分幅的游乐场

它使用的算法如下所示:

  • 测试是否存在XHR2、IndexedDB和铬(不含 二进制blob,但Base64)。并显示此状态信息
  • 从GoogleDrive获取PNG tiles的JSON清单(我有171个PNG) 瓷砖,每个尺寸为256x256)。清单上列出了他们的名字和名字 尺寸
  • 将JSON清单存储在数据库中
  • MVVM和UI控件来自KendoUI(这次我没有使用它们的 极好的网格控制,因为我想探索CSS3网格样式)
  • XHR2来自:
  • 我正在使用PockDB的夜间构建
  • 所有PNG文件都存储在Google Drive(NASA蓝色大理石)上
  • 我用安全的FME 2013桌面创建了平铺金字塔。
在按下“下载磁贴”按钮之前,请检查清单是否已存储在数据库中,并且是否存在171个磁贴。如果您已经运行了测试,则您的数据库将在数据库中已经有磁贴,并且您将收到错误。在这种情况下,请按Delete DB,然后重新加载页面

按“下载互动程序”时,会发生以下步骤:

  • 清单是从数据库中获取的
  • XHR2获取循环从GoogleDrive获取PNG blob
  • 循环运行时,它开始将blob保存到数据库中
  • 注意:获取和保存在重叠的线程上(请考虑 co例程),因为这些(获取和存储)操作正在运行 在单独的线程上异步
  • 当Fetch循环完成时,它会报告经过的时间
  • 注意:这一次不是纯粹的获取工作,因为 putAttachments()并行运行
  • 保存所有磁贴后,它将报告完整的统计信息,并且 显示从数据库获取的磁贴
  • Blob对每个png磁贴的总获取和存储时间进行评级
目前Chrome运行良好。Firefox运行非常缓慢。我在几个月前制作本机IndexedDB API时发现了这一点。因此我认为这不是PockDB问题。可能更多的原因是Firefox使用SQLlite,这是一种无SQL DB的关系方法

IE10不起作用。这很令人伤心,因为我之前用IE10进行的测试表明它有一个非常快的IndexedDB解决方案:

  • 关于“浏览器如何存储IndexedDB数据”的必读文章
  • 注意:FireFox对NOSQL IndexedDB使用SQLlite 性能缓慢的原因。(BLOB单独存储)
  • 注意:Microsoft IE使用可扩展存储引擎:
  • 注:Chrome使用LevelDB

这个问题似乎离题了,因为它不是一个问题。Codepen演示已中断。google已禁用对google drive的直接访问。因此,我无法主持互动程序。