如果经常用浏览器看视频,并定期查看磁盘的S.M.A.R.T信息可能会明显注意到SSD 的写入量增加很快。
使用 iotop、GNOME System Monitor 之类工具,能看到浏览器进程不断产生磁盘 I/O。浏览器为了提高网页加载速度,会在本地保存大量缓存。图片、脚本、网页资源,以及视频播放过程中下载的数据,都可能进入缓存系统。
因为AI基建热潮SSD的价格水涨船高,而SSD的写入量和使用寿命直接相关,所以有必要考虑减少对SSD不必要的消耗,如果电脑内存比较充足,那么可以考虑把浏览器缓存放到内存文件系统里。
Linux 下可以直接利用 $XDG_RUNTIME_DIR
Linux 桌面环境通常会提供变量:
很多系统上会得到:
这个目录属于当前用户的运行时目录,通常使用 tmpfs,也就是说数据主要存放在内存中。
可以检查一下:
如果看到文件系统类型是 tmpfs,那么就可以把一些适合临时保存的数据放到这里。
为什么不用/tmp
/tmp/ 是全局共享的:Linux 系统中的 /tmp/ 目录默认对系统里的所有用户和所有程序开放读写权限。如果你把浏览器的缓存放在 /tmp/chromium-cache,这意味着其他登录这台电脑的用户,或者系统里运行的其他低权限脚本,都有可能读取到你浏览器缓存里的图片、网页片段和敏感脚本。/run/user/1000/ 是私密的:这个目录的底层权限是 0700(即 rwx------)。只有你本人(UID 1000)和 root 能够访问。把缓存放在这里,能保证你的上网隐私不会泄露给系统内的其他进程。
Chromium / Chrome:把磁盘缓存指定到内存目录
Chromium 系浏览器支持选项:
可以用它指定磁盘缓存目录。
例如:
--disk-cache-dir=/run/user/1000/chromium-cache
同时可以限定缓存的大小,防止内存被占用过多:
--disk-cache-size=1073741824
这个选项使用的单位是字节,1073741824 就是 1 GiB。
于是可以得到类似:
--disk-cache-dir=/run/user/1000/chromium-cache --disk-cache-size=1073741824
这样,Chromium 的缓存就会被放到 /run/user/1000/chromium-cache。
Flatpak 版 Chromium 稍微麻烦一点
如果你使用的是 Flatpak 版 Chromium,沙盒默认并不能随意访问宿主机的 /run/user/1000。
可以给它增加对应的运行时目录权限。
例如:
flatpak override --user org.chromium.Chromium \ --filesystem=xdg-run/chromium-cache:create
然后让 Chromium 使用:
/run/user/1000/chromium-cache
作为缓存目录。
这里有一个容易搞混的地方:
xdg-run/chromium-cache 是 Flatpak 的路径表达方式,对应当前用户的 $XDG_RUNTIME_DIR/chromium-cache。
它不是在磁盘上创建一个叫“xdg-run”的普通目录。
怎么修改 Chromium 的启动参数?
如果你希望从图形菜单启动 Chromium 时也自动使用这个参数,可以在用户自己的 .desktop 文件里修改。
先创建目录:
mkdir -p ~/.local/share/applications
然后把系统提供的 desktop 文件复制过去。
通过系统包管理器安装的chromium:
cp /usr/share/applications/org.chromium.Chromium.desktop \ ~/.local/share/applications/
通过flatpak安装的chromium:
cp /var/lib/flatpak/exports/share/applications/org.chromium.Chromium.desktop \ ~/.local/share/applications/
然后再编辑:
~/.local/share/applications/org.chromium.Chromium.desktop
找到:
对应的启动命令,如果是flatpak版只须在 Chromium 参数后加入:
--disk-cache-dir=/run/user/1000/chromium-cache--disk-cache-size=1073741824
因为当执行:
flatpak run org.chromium.Chromium
Flatpak 在真正启动 Chromium 进程之前,会先根据应用的权限配置
准备沙盒运行环境。其中就包括处理类似:
xdg-run/chromium-cache:create
这样的 filesystem 权限。如果目录不存在,flatpak会自动创建。
而通过系统包管理器安装的chromium则需要在.desktop中自行增加创建目录的语句:
Exec=sh -c 'mkdir -p "/run/user/1000/chromium-cache"; exec /usr/bin/chromium --disk-cache-dir="/run/user/1000/chromium-cache" "$@"' sh %U
另外,如果系统用户 UID 不是 1000,也不要直接写死 /run/user/1000。
更稳妥的思路是先确认一下:
然后使用实际的运行时目录。
Firefox:设置起来更直接
Firefox 本身就提供了比较完善的缓存设置。
在地址栏输入:
搜索:
browser.cache.disk.enable
将它设置为:
这样可以关闭磁盘缓存。
同时确认:
browser.cache.memory.enable
保持为:
Firefox 就会更多地使用内存缓存。
另外还有:
browser.cache.memory.capacity
如果它是:
通常意味着让 Firefox 根据环境自动决定内存缓存大小。
对于大多数用户来说,保持默认值反而是比较省心的选择,没必要为了把缓存全部塞进内存而手动设置一个很大的数字。
Windows 也可以把浏览器缓存放进内存吗?
可以吧,那具体怎么操作呢?完全没兴趣知道。
有必要这样做吗?
如果 SSD 每天只有几十 GB 的写入,其实没必要因为看到浏览器缓存写盘就紧张。现代 SSD 的耐久度通常相当不错,正常桌面使用很难仅仅因为“看视频”把 SSD 用坏。而且浏览器缓存并不是唯一的写入来源。
Linux 桌面系统中还有:
等等。
所以,把浏览器缓存放进内存,更多是一种针对临时数据的优化,不是 SSD 寿命的“急救措施”,只能延长一些SSD的使用寿命。
缓存放到 $XDG_RUNTIME_DIR 后,电脑重启,缓存就没了,所以代价也很明显,之前缓存过的网页资源每次都需要重新下载。
所以这并不是单纯的“有利无害”。
如果你的网络速度很快、内存比较充足,而且本身就比较在意 SSD 写入,那么这个方案很适合尝试。
如果电脑内存比较紧张,或者经常访问同样的网站,希望充分利用浏览器已有缓存,那么保持默认设置可能反而更合理。