将 Google Chrome 的缓存目录迁移至内存盘(RAM Disk),是提升浏览器性能、减少磁盘 I/O 并延长 SSD 寿命的有效技巧。然而,在 macOS 上实现这一目标并非易事。这不仅是简单的路径修改,还需应对 Chromium 内核对文件系统持久性的验证、启动参数的传递限制以及通过 AppleScript 进行进程管理等技术挑战。
步骤一:创建并配置内存盘
我们推荐使用 tmpdisk
这款免费工具来创建内存盘,它能方便地在系统启动时自动挂载。
首先,通过 Homebrew Cask 进行安装:
brew install tmpdisk --cask
安装后,启动 tmpdisk
应用进行配置。请创建一个内存盘(例如,命名为 ChromeRAM
,大小建议 1GB 或以上),并确保其在系统登录时自动挂载。
关键配置:在 Folders
选项中,可以预设需要自动在内存盘中创建的目录,例如 Cache
。默认的挂载路径是 /Users/用户名/.ramdisk
,可以修改为其他路径,例如 /Volumes/ChromeRAM/
,为保持路径清晰,我们后续将在 AppleScript 中直接指定完整路径,例如 /Volumes/ChromeRAM/Cache
。请确保您的内存盘名称与脚本中的路径一致。
核心挑战:为何常规方法会失效?
直接通过软链接或修改设置的方式通常会失败,其根本原因在于 Chrome 的安全与稳定性机制。
1. Chrome 会自动跳过“不可靠”的缓存路径
Chromium 内核在初始化磁盘缓存时,会检查目标文件系统是否为持久性存储。其判断逻辑大致如下:
// pseudo-code from Chromium source
if (base::IsOnNonPersistentFilesystem(path)) {
// Path is on a non-persistent filesystem (like a RAM disk).
// Skip disk cache initialization to prevent data loss or instability.
return nullptr;
}
macOS 创建的默认内存盘(HFS+ 格式)会被识别为非持久性文件系统,导致 Chrome 自动禁用在该路径下的磁盘缓存功能。
2. 软链接方式会被 Chrome 识破
若尝试将默认缓存目录 ~/Library/Caches/Google/Chrome/Default/Cache
替换为一个指向内存盘的软链接,Chrome 在启动时会检测到这种“劫持”行为,并出于安全考虑而完全禁用缓存,而不是将缓存写入新位置。
3. GUI 启动无法传递自定义参数
虽然 Chrome 支持通过命令行参数 --disk-cache-dir=...
来指定缓存路径,但这仅在从终端启动时有效。通过点击 Dock 栏或应用程序文件夹中的图标来启动 Chrome,是无法传递这些参数的。
步骤二:使用 AppleScript 创建自定义启动器
为了解决上述问题,我们需要创建一个 AppleScript 应用作为“包装器”,它唯一的任务就是用我们期望的参数来启动 Chrome。
1. 编写 AppleScript 脚本
打开系统自带的 “脚本编辑器” (Script Editor) 应用,创建一个新脚本,并粘贴以下内容:
-- 定义内存盘中的缓存路径
-- 请确保/Volumes/ChromeRAM/Cache这个路径存在
on run
do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --disk-cache-dir=/Volumes/ChromeRAM/Cache > /dev/null 2>&1 &"
end run
on reopen
-- 当点击 Dock 图标时,也执行激活
tell application "Google Chrome"
activate
end tell
end reopen
on quit
try
tell application "Google Chrome" to quit
end try
continue quit
end quit
2. 导出为应用程序
在脚本编辑器中,通过菜单 文件 (File) → 导出 (Export) 来保存脚本。
- 导出为 (Export As):
ChromeWithRAMCache.app
(或任何你喜欢的名字) - 位置 (Where): 应用程序 (Applications) 文件夹
- 文件格式 (File Format): 应用程序 (Application)
- 重要: 勾选 “启动后保持运行” (Stay open after run handler) 选项。这能确保我们的
on quit
逻辑在关闭应用时被正确触发。
3. 更换应用图标(可选但推荐)
为了方便识别,我们可以将这个新应用的图标替换为官方 Chrome 图标。
-
在 “访达” (Finder) 中,找到官方的
Google Chrome.app
。 -
右键点击,选择 “显示简介” (Get Info),或使用快捷键
Cmd + I
。 -
点击简介窗口左上角的小图标,它会被蓝色高亮。按下
Cmd + C
复制。 -
找到我们刚刚创建的
ChromeWithRAMCache.app
,同样打开其“显示简介”窗口。 -
点击左上角的小图标,按下
Cmd + V
粘贴。
4. 替换 Dock 中的启动项
现在,将旧的 Chrome 图标从 Dock 栏移除,并将你新创建的 ChromeWithRAMCache.app
拖入 Dock。今后,始终使用这个新图标来启动 Chrome。
步骤三:验证缓存是否生效
要确认设置是否成功,可以采用以下几种方法:
- 检查文件系统: 启动新应用并浏览几个网页后,检查你在内存盘中指定的缓存路径(例如
/Volumes/ChromeRAM/Cache
)下是否已生成了缓存文件。
重要注意事项
- 避免共享缓存: 不要让多个基于 Chromium 的浏览器(如 Chrome, Edge, Brave)共享同一个缓存目录,这可能导致数据损坏。为每个浏览器创建独立的 AppleScript 启动器和独立的缓存文件夹。
- 软链接依然不可取: 不要尝试用软链接指向默认缓存路径,这会绕过我们精心设计的启动器,导致缓存失效。