设置Chrome、Firefox等浏览器缓存到tmpfs

将浏览器cache缓存从硬盘转移至物理内存

作者: Duter2016 | 2023-08-02 | 阅读
「编辑」 「本文源码」

tmpfs(英语:temporary file system)是类Unix系统上暂存档存储空间的常见名称,通常以挂载文件系统方式实现,并将资料存储在易失性存储器(如物理内存)而非永久存储设备中。和RAM disk的概念近似,但后者会呈现出具有完整文件系统的虚拟磁盘。

tmpfs在Linux kernel从2.4之后的版本都有支持。tmpfs(之前比较为人所知的名称是”shmfs”)和Linux的ramdisk设备定位有所不同。Ramdisk是固定划分一块存储器出来使用,且允许比较不常用的页面可以移动到置换空间去。MFS还有其它ramfs的旧版本,都不会动态的调整大小,只能一直占用一个固定的大小。而tmpfs文件系统的大小是可以随时调整的,比如追加一个指令,改变:

mount -o remount,size=2G /space

因此,我们可以选择把物理内容出一部分当部分的硬盘空间来使用,读写速度相当丝滑,而且不用频繁的读写硬盘。当然,万一掉电了,tmpfs上的内容也就没了,所以要存储的配置数据等,自然是不会放在这边的。但我们可以把浏览器的缓存数据,放在这个分区上。

Archlinux系 和 debian系的系统都默认挂载了tmpfs分区,可以使用mount命令查看:

$ mount

# 输出:

/dev/sda14 on / type ext4 (rw,noatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=4096k,nr_inodes=973070,mode=755,inode64)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,noatime,size=2097152k,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,size=1564188k,nr_inodes=819200,mode=755,inode64)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=34,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=2798)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,size=3910464k,nr_inodes=1048576,inode64)
rw,nosuid,nodev,relatime,size=782092k,nr_inodes=195523,mode=700,uid=1000,gid=1000,inode64)
......

设置Chrome、Firefox、Edge等浏览器的缓存默认是在/home/<username>/.cache/目录下的。下面我们把这些浏览器的缓存改为在tmpfs分区。

使用的机械硬盘,清理缓存的时候,在.cache目录发现了edge上G的缓存文件,几万个文件,删除也慢。就打算把edge、google-chrome、forefox的缓存文件一起放到tmpfs。

(1)设置浏览器使用的tmpfs分区

基本上linux系统都会有/dev/shm,但是不一定把/tmp挂载成tmpfs。所以修改这个缓存路径的话,还是修改到/dev/shm下比较合适。

编辑修改/etc/fstab文件,挂载一个 tmpfs 分区使用,注意设置权限:

tmpfs /dev/shm tmpfs defaults,noatime,nodev,nosuid,size=2048M,mode=1777 0 0

要注记一点: 如果/dev/shm有安全上的顾虑的话,最好追加粘滞位(sticky bit)上来。就是权限应该被设作”mode=1777”,而不是”mode=0777或”mode=777”

如果仅用defaults,不设置size参数,默认是最大占用物理内存的50%,想自己确定大小,就自己加size参数。

这样把tmpfs写在fstab里面就可以开机启用了!重启后生效。

重启后,可以使用命令df -h查看tmpfs的挂载及使用情况:

$ df -h
文件系统        大小  已用  可用 已用% 挂载点
/dev/sda14       57G   28G   26G   52% /
devtmpfs        4.0M     0  4.0M    0% /dev
tmpfs           2.0G   98M  2.0G    5% /dev/shm
tmpfs           1.5G  1.5M  1.5G    1% /run
tmpfs           3.8G   37M  3.7G    1% /tmp
/dev/loop0      173M  173M     0  100% /run/wine
tmpfs           764M  108K  764M    1% /run/user/1000

(2)设置浏览器缓存至tmpfs分区

①修改Chrome的话,如果你是使用KDE界面的话,就比较容易了。修改KDE菜单编辑器中的Chrome的命令,加上

--disk-cache-dir="/dev/shm/chrome_$USER"

为了区分可能不同的用户,所以我加上了_$USER。另外,我们也可以修改浏览器启动的.desktop文件, 对于Chrome,把 usr/share/applications/google-chrome.desktop(全局,所有用户)(~/.local/share/applications/google-chrome.desktop为当前用户)中修改启动命令为:

Exec=/usr/bin/google-chrome-stable %U --disk-cache-dir="/dev/shm/googlechrome_$USER"

修改这个文件,升级不会被覆盖掉。不过你之后执行的话,要点击这边的这个.desktop文件。

其实以chromium为基础的浏览器,比如linux版本的opera、edge等也是可以的。

②对于edge,把 usr/share/applications/microsoft-edge-dev.desktop中修改启动命令为:

Exec=/usr/bin/microsoft-edge-dev %U --disk-cache-dir="/dev/shm/edge_$USER"

③ 对于firefox, 在firefox的地址栏输入

about:config

之后会跳出警告,点保证小心就是了。进入界面后,右键–>新建–>字符串–>输入首选项名称,输入首选项名称如下:

browser.cache.disk.parent_directory 键值string为:

/dev/shm/firefox_dd

④ thunderbird也是和firefox一个出身的,在ubuntu下thunderbird的about:config是没地方可以输入的。但是其有配置首选项,里面有个配置编辑器,与firefox一样,会弹出警告,警告上面的标题就可以看到about:config了。配置的话,也是和firefox一样的,当然,你得把键值路径给改一下。那么重启下,也就重定向缓存的路径了。

设置的tmpfs重启系统后生效,设置的浏览器,重启浏览器后就可以生效。

清除chromium dns缓存: chrome://net-internals

参考:


版权声明:本文由 Duter2016 在 2023年08月02日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《设置Chrome、Firefox等浏览器缓存到tmpfs》




  相关文章:

「游客及非Github用户留言」:

「Github登录用户留言」:

TOP