SwitchyOmega icon indicating copy to clipboard operation
SwitchyOmega copied to clipboard

在选项中提示本地和同步存储容量使用情况

Open lygstate opened this issue 10 years ago • 20 comments

切换成手动同步吧

lygstate avatar Feb 10 '15 02:02 lygstate

同步功能需要连接到谷歌服务器,在部分国家地区网络环境下,可能出现连接不稳定的情况,可以试着使用代理等。若连接正常时,设置更改后一般仅仅几秒钟即可同步到另一台设备,本来就不存在“自动”或“手动”一说。

FelisCatus avatar Feb 10 '15 03:02 FelisCatus

我使用代理了 根本同步不上去 先别急着关

lygstate avatar Feb 10 '15 05:02 lygstate

每次同步都是把服务器上的配置下载下来覆盖本地的,本地的修改根本同步不上去

lygstate avatar Feb 10 '15 05:02 lygstate

您的意思是说,两台设备的情况下,两边同时做了修改,但结果其中一个的覆盖了另一个吗?

FelisCatus avatar Feb 10 '15 06:02 FelisCatus

我现在的情况是,目前同步了两个配置,添加的三个PAC配置的时候,总是同步不上去,被服务器上的配置覆盖了。 是不是PAC配置有同步问题? 不是被其它电脑覆盖了,我有两台电脑同步

lygstate avatar Feb 11 '15 02:02 lygstate

请新建第三个 PAC 文件后,先等一会。如果被覆盖,请用弹出菜单中的错误日志功能导出一份日志并上传至 https://gist.github.com/ ,以供分析问题。在此过程中,请不要在另一台设备上操作。 如果 Chrome 浏览器开着的时候不会被覆盖,重启后才会被覆盖的话,请提供重启前后各一份日志,谢谢。 另外,我个人比较怀疑是撞到了存储频率或者容量限制……也可以试着在 SwitchyOmega 设置页面按 F12 打开开发者工具,选择Console控制台,并输入以下代码回车chrome.storage.sync.getBytesInUse(console.log.bind(console))即可显示使用了多少存储容量,请把结果数字告诉我。

FelisCatus avatar Feb 11 '15 03:02 FelisCatus

我明白什么原因了,应该是同步的数据量太大了,我的PAC文件很大

lygstate avatar Feb 11 '15 05:02 lygstate

https://gist.github.com/lygstate/1f59768085d5383e9e0e 你试试添加这个pac文件,看是否能同步

lygstate avatar Feb 11 '15 05:02 lygstate

数据量太大了,估计已经达到单项设置存储限额了。按照Chrome 扩展同步存储限制

总容量上限: 102,400 Bytes = 100KB 每项设置容量上限: 8,192 Bytes = 8KB 最大项目数量: 512 项

也就是说, 每个情景模式最多只能使用8KB存储空间 ,且最多不能超过 450 个情景模式(假设其他简单选项使用了62项)。

暂时而言,我推荐这么大的PAC文件还是不要放进选项里了。可以放在一个本地文件里,并在 PAC 网址里填上 file:///D:/a.pac (Windows) 或 file:///home/example/a.pac (*nix),这样就只会同步文件路径上去,而不会同步整个PAC内容。当然这样的话就要把文件手动拷贝到另一台设备上了……

所以,退一步来说,我认为目前扩展存在的缺陷是:

  • 对于无法放入存储空间的情景模式,不应该同步到服务器,但也 不应该自动删除 。这个是主要问题。
  • 没有提示每个情景模式的容量限制。当容量超过限额时,应该提示用户同步失败,且告知用户此情景模式将不会被同步。
  • 没有提示总的存储容量限制。当容量超过限额时,应该提示用户新增的情景模式将无法同步。
  • (可选)允许用户手动设置某个情景模式不同步。

FelisCatus avatar Feb 11 '15 05:02 FelisCatus

另外本地存储其实也有一个 5MB 的限制,只是比较少有人达到……到达此限制后,即使不开启同步,估计也没法正常使用扩展了……

FelisCatus avatar Feb 11 '15 05:02 FelisCatus

这样吧,我先快速做一个简单的判断来解决第一个问题。

  • 当单个情景模式容量超过限额时,此情景模式将会自动被设置为禁用同步。在选项的那个情景模式设置页面,将会看到警告。禁用同步的情景模式不会被上传至服务器,也不会被服务器上的同名情景模式覆盖,不会因为同步而被删除。

FelisCatus avatar Feb 11 '15 07:02 FelisCatus

按以上方案,已经暂时解决问题。请等待下一次更新发布。(目标版本 v2.3.3 ,预计发布时间:1小时以内。)

由于解决方案不完善,因此重新开启 issue 。下一步的改进:

  • 在选项中,提示每个情景模式的已使用容量和容量限制。当用户修改情景模式,减少容量占用时,应该给用户一个按钮,重新启用同步。
  • 允许用户手动禁用某个情景模式的同步,并且之后可重新启用。
  • 在选项界面中,提示总的存储容量限制(包括本地限制和同步限制)。当容量超过限额时,应该提示用户新增的情景模式将无法同步。

FelisCatus avatar Feb 11 '15 08:02 FelisCatus

v2.3.3 已经发布。

FelisCatus avatar Feb 11 '15 11:02 FelisCatus

对于pac rulelist 通过在线更新的情景模式 是否只备份更新的url而不备份里面的内容

这样对于大部分人来说 情景模式的备份应该就不会有问题了

avkiller avatar Mar 09 '15 08:03 avkiller

@avkiller :+1:

syswow avatar Mar 09 '15 08:03 syswow

@avkiller 从最开始就已经这样了。如果有更新URL则不会备份PAC脚本内容。

FelisCatus avatar Mar 09 '15 11:03 FelisCatus

我不知道现在同步的机制是什么样的,不过建议能不能改成上传和下载两个按钮,然后显示一下目前服务器版本的上传时间和hostname(以后还可以考虑增加回滚机制),不然比如我在两台机器上离线状态下做了不同的修改怎么解决冲突?

clouds56 avatar Mar 14 '15 16:03 clouds56

@ztq56 同步机制没有那么复杂的,没办法做到显示上传时间和hostname,也不能手动查询服务器上的数据(必须等待服务器自动推送数据到本地)。两台机器上离线状态下做了不同的修改这件事情是没什么办法的,目前情景模式是按照修改时间优先使用最近的,其他选项是顺其自然……

FelisCatus avatar Mar 15 '15 04:03 FelisCatus

我发现autoproxy模式下使用了pac如果pac内容太多也没法同步

hnliuzesen avatar Sep 23 '15 03:09 hnliuzesen

数据量太大了,估计已经达到单项设置存储限额了。按照Chrome 扩展同步存储限制

总容量上限: 102,400 Bytes = 100KB 每项设置容量上限: 8,192 Bytes = 8KB 最大项目数量: 512 项

也就是说, 每个情景模式最多只能使用8KB存储空间 ,且最多不能超过 450 个情景模式(假设其他简单选项使用了62项)。

暂时而言,我推荐这么大的PAC文件还是不要放进选项里了。可以放在一个本地文件里,并在 PAC 网址里填上 file:///D:/a.pac (Windows) 或 file:///home/example/a.pac (*nix),这样就只会同步文件路径上去,而不会同步整个PAC内容。当然这样的话就要把文件手动拷贝到另一台设备上了……

所以,退一步来说,我认为目前扩展存在的缺陷是:

  • 对于无法放入存储空间的情景模式,不应该同步到服务器,但也 不应该自动删除 。这个是主要问题。
  • 没有提示每个情景模式的容量限制。当容量超过限额时,应该提示用户同步失败,且告知用户此情景模式将不会被同步。
  • 没有提示总的存储容量限制。当容量超过限额时,应该提示用户新增的情景模式将无法同步。
  • (可选)允许用户手动设置某个情景模式不同步。

数据和存储分开进行能行得通吗? (解决单个自定义规则太大导致不能同步的问题)

const transPacDataToGoogleStorageFiles = async (content: string): File[] => {
  // * 按8kb切分,甚至可以做压缩
}

const transGoogleStorageFilesToPacData = async (files: File[]): string => {
  // * 转回来
}

seognil avatar Jul 02 '22 02:07 seognil