繁体   English   中英

如何在Chrome实例之间同步localStorage(或使用没有发布扩展名的chrome.storage.sync)?

[英]How can I sync localStorage across Chrome instances (or use chrome.storage.sync without a published extension)?

以下是我的情况:我已经编写了许多Chrome用户脚本供我个人使用。 以前,我只有一台机器上有一个Chrome实例,所以我非常乐意将任何持久数据转储到localStorage。

但是,我现在有多台机器,并希望在所有机器上的Chrome上使用我的用户脚本,我的持久数据随之而来。 如果有点乏味(将其粘贴在Bitbucket仓库中,然后拉动并手动安装),同步用户脚本代码本身很简单,但我不知道如何跨机器同步我的localStorage数据。

我考虑过将我的用户脚本转换为正确的Chrome扩展程序并使用chrome.storage API(如果您的Chrome帐户已连接到我的Chrome实例,那么使用chrome.storage.sync存储的数据显然可以同步)。 但是,这是我的用例的问题:

  • 为了同步您的数据,您似乎必须将扩展程序发布到Chrome商店。
  • 我不希望我的扩展程序在Chrome商店中公开可见,因为1.)这需要花钱; 2.)一些扩展本质上是“敏感的”。
  • 即使我花钱并因此解决(1.),我发现在Chrome商店中添加私人扩展程序的唯一方法是使用Google Apps for Work或Education(参见“发布私有Chrome应用”) ),我显然没有Google Apps的个人实例。

那么:有没有办法让我能够直接在机器之间同步localStorage,或者2.)使用chrome.storage.sync API而不使用公开发布的Chrome扩展程序?

这并没有真正回答我最初提出的问题,但这就是我最终要解决的问题,所以无论如何。

  • 最后,我放弃了使用chrome.storage的想法(chrome.storage.sync上的空间限制是站不住脚的),而是使用PouchDB编写了我的扩展, PouchDB是CouchDB的Javascript实现。 PouchDB在内部使用IndexedDB,默认情况下它具有每个扩展名限制(我认为5 MB?我没有费心去测试),但可以通过在扩展清单中设置"unlimitedStorage"权限来授予无限存储空间。 PouchDB的存储模型基本上在各方面都优于chrome.storage存储模型(免费修订跟踪,记录的同步协议,而不是voodoo chrome.storage.sync所做的任何事情等),以及缺点(额外的依赖,需要)对于一个单独的远程服务器[见下文]等)对我来说不是一个大问题。
  • 我启动了一个免费的EC2微实例并在其上安装了CouchDB服务器。 CouchDB的配置有点挑剔,但是一旦处理好就可以正常工作。 我的EC2实例在一年后停止了免费,所以我切换到Cloudant ,它提供与CouchDB兼容的托管,如果你每月使用不到50美元的存储+带宽,我可以免费使用。
  • 我将我的扩展设置为指向我的Cloudant实例,使用普通的旧HTTP基本身份验证进行身份验证(这里很好,因为我是唯一使用此扩展的人,这意味着我可以自由地将我的密码放入明文中扩展名),并在用户请求时与远程实例同步。
    • 我在这里采用的身份验证方法(结合部署策略[见下文]等)可能有一堆漏洞,但我并不在乎; 这似乎足以阻止随意入侵,这已经足够好了(我没有处理重要或特权数据)。
  • 我没有通过Chrome商店部署我的扩展程序,这看起来很复杂并且需要花钱,我现在有一个更加贫民窟的解决方案,我将扩展程序从我的开发机器移动到我的其他机器,方法是将解压缩的扩展文件夹复制到我的Dropbox文件夹中等待让Dropbox将它同步到我的其他机器。 然后我在其他机器上加载(或重新加载)解压缩的扩展。 (这比基于Bitbucket的解决方案[或任何其他基于Git的解决方案]更容易,因为当我尝试使用Git完成任何操作时,我的Windows机器都完全适合。)
    • 使用Dropbox(或涉及未发布的解压缩扩展程序的任何其他解决方案)而不是Chrome商店的一个缺点 - Chrome会让您在每次打开Chrome时禁用非商店扩展程序,即使您使用的是Chrome开发者频道。 根据Xan在下面的评论,我可能会再次考虑使用Chrome商店作为部署扩展程序的方法。

暂无
暂无

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

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