You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何刷新浏览器自定义URL缓存?解决自定义URL scheme关联异常

结合我处理过的类似自定义URL Scheme冲突问题,来给你详细拆解这个浏览器缓存的疑问:

自定义URL Scheme浏览器缓存相关问题解答

一、缓存过期时间

主流浏览器(Chrome、Safari、Firefox等)并没有公开统一的自定义URL Scheme缓存过期时间——它本质是持久化的应用关联记录,默认不会自动过期。

  • 只有两种情况会让这个缓存失效:要么你手动清除了关联记录,要么旧应用被卸载(部分浏览器会检测到应用移除,自动删除对应的Scheme关联)。
  • 如果旧应用还在设备上,这个缓存会一直保留,不会随时间自动消失。

二、缓存查看方法

不同浏览器的查看路径差异不小,给你列几个常用的:

Chrome(桌面端)

直接在地址栏输入 chrome://settings/handlers 回车,就能看到所有已绑定的URL Scheme和对应的应用,找到myapp://条目就能确认当前关联的是旧应用。

  • 移动端Chrome没有单独的查看入口,得去系统设置里的「默认应用」→「链接处理」里找。

Safari(桌面端)

打开Safari偏好设置 → 切换到「网站」标签 → 左侧列表拉到最底部选「其他」,就能看到所有自定义Scheme的关联应用,定位myapp://即可。

  • 移动端Safari没有可视化的查看入口,只能像你说的那样,手动去浏览器偏好设置文件里找(比如macOS上的~/Library/Safari/Preferences/com.apple.Safari.plist)。

Firefox

地址栏输入 about:preferences#general,下滑到「应用」区域,搜索框输入myapp,就能找到对应的Scheme关联记录。

三、缓存刷新/清除方式

官方可视化操作(部分浏览器支持)

这是最方便的方式,能直接在浏览器设置里操作:

  • Chrome:在chrome://settings/handlers找到myapp://,点右侧三个点→选「移除」,之后再触发myapp://请求,浏览器会重新弹出选择应用的对话框。
  • Firefox:在about:preferences#general的应用列表里找到myapp,下拉菜单选「总是询问」,或者直接移除关联。
  • Safari桌面端:在偏好设置的「网站」→「其他」里选中myapp://,点底部的「移除」按钮就行。

手动清除(针对无可视化入口的场景)

正如你发现的,有些场景(比如移动端Safari)只能手动操作偏好文件:

  • macOS Safari:先关掉Safari,找到~/Library/Safari/Preferences/com.apple.Safari.plist,用plist编辑器打开,搜索myapp相关的键值对(一般在URLHandler字典里),删掉对应条目后保存,重启Safari就生效了。
  • iOS Safari:因为是系统应用没法完全卸载,只能去「设置」→「通用」→「iPhone存储空间」→找到Safari,选「删除应用」(记得备份书签等数据),之后重新安装,这样会重置所有关联记录。

长期规避方案

其实最稳妥的办法是给新应用用不同的URL Scheme(比如myapp-new://),从根源上避免浏览器把两个应用的Scheme搞混,毕竟依赖清除缓存的方式,用户操作成本也高。


内容的提问来源于stack exchange,提问作者tuexss

火山引擎 最新活动