如何刷新浏览器自定义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




