随着 Xcode 的版本升级,速度越来越慢,尤其一言不合就“白板”的问题相信大家都会有遇到。
这是非常影响开发效率的事情。如果有可能,那么我们将 Xcode 的缓存文件放到内存,速度应该快很多。(虽然现在 rmbp 的 ssd 已经十分的快速了,但比起内存,还是差的很远——对于机械硬盘的老机器来说,提速就会更加明显了。)
——还记得 Windows 的那个 RamDisk 吗?其实 Linux 也有,而且不需要第三方的软件,一条自带的命令就可以完成了!
我们的目标就是从内存里划出一部分空间,把它格式化为硬盘挂载的系统当中,专门用来放缓存!
要注意的地方
既然是内存,那么关机内容是肯定会丢失的,所以我们仅仅用它来存放可以再生成的缓存,可以再下载的内容也不应该放在里边。比如 OS X 里的 helpd 下载的帮助文件,就不应该放在里边。
你的内存总空间是多少,分配的内存硬盘体积就应该相应地改变大小,毕竟将内存划走了固定的一块,比如我这里用的是1GB,那么我原本的8GB内存就变成了7GB大小。
动手做
打开 OS X 自带的脚本编辑器 ,新建一个文档,其它默认,然后在里边写入:
1 2 3 4 5 6 7 8 9 |
do shell script " if ! test -e /Volumes/\"Ramdisk\" ; then diskutil erasevolume APFS \"RamDisk\" `hdiutil attach -nomount ram://2097152` fi mkdir -p /Volumes/Ramdisk/Library/Developer/Xcode mkdir -p /Volumes/Ramdisk/Library/Caches/Google mkdir -p /Volumes/Ramdisk/Library/Caches/com.apple.Safari/fsCachedData " |
- 2048 1MB
- 2097152 1GB
- 4194304 2GB
- 8388608 4GB
然后把它保存成 .app格式:
双击执行就可以自动挂载一个叫做“RamDisk”的硬盘了,这个硬盘里的内容会在电脑重启后清空,大小是1GB,如果你把它推出了,那么里边的东西也会丢失,所以务必存放缓存文件。
生成之后,我们就来把其它应用的缓存替换过来,对于 Xcode 来说,你可以在应用里直接设置,不过我们这里统一使用目录替换的方式,好处是一些不支持配置的比如 Safari ,我们也能手动把它的缓存目录替换到内存中,对应用透明。
这里我们替换三个应用,首先退出它们:Safari Chrome Xcode
然后删除这些应用的缓存目录:
1 2 3 4 5 |
sudo rm -rf ~/Library/Developer/Xcode/DerivedData sudo rm -rf ~/Library/Caches/com.apple.Safari sudo rm -rf ~/Library/Caches/Google |
这些目录里的文件都是可以随时删除的,你重新打开就会自动建立,你的数据都不会丢失。
然后根据我们在内存硬盘中建立好的目录来创建目录链接,就像是 Windows 里的快捷方式,但比那个好用多了:
1 2 3 4 5 |
ln -s /Volumes/RamDisk/Library/Developer/Xcode ~/Library/Developer/Xcode/DerivedData ln -s /Volumes/RamDisk/Library/Caches/com.apple.Safari ~/Library/Caches/com.apple.Safari ln -s /Volumes/RamDisk/Library/Caches/Google ~/Library/Caches/Google |
这个目录替换是一次设置永久生效的,所以,我们也应该让这块内存硬盘在开机的时候自动挂载,那么只需要在“系统偏好设置”当中-“用户与群组”-“登陆选项”里加入之前创建的app文件即可。
删除与恢复
如果要删除整个方案,那么只需要先去下面的目录把创建的链接文件删除,再去掉那个脚本的启动项就好了:
1 2 3 4 5 |
sudo rm -rf ~/Library/Developer/Xcode/DerivedData sudo rm -rf ~/Library/Caches/com.apple.Safari sudo rm -rf ~/Library/Caches/Google |
性能与效果
如果你仅仅做一般的 Xcode 开发,那么 1GB 的空间应该是足够使用的了,这样一来 Xcode 的速度会快很多,不再那么容易就白板了。另外,对于 Chrome 和 Safari 的效果十分的明显。
如果你像我一样经常用 Xcode 来回切换多个开发项目并编译,那么可能会遇到空间塞满的情况,这时候你要注意这个“内存硬盘”不会自己释放空间,所以要手动进去删除一下 Xcode 生成的缓存文件,然后再编译。
往好的方面想,即使重新生成缓存文件,速度也还是比固态要快的,还不会降低硬盘的读写寿命。
延伸阅读
本文由 落格博客 原创撰写:落格博客 » OS X 开启 RamDisk 来为 Safari 和 Xcode 加速
转载请保留出处和原文链接:https://www.logcg.com/archives/2725.html
This is not working anymore since sandboxing around Safari now even blocks symlinks to different Volumes like the Ramdisk.
Some Japanese created a script that mounted the Ramdisk directly at the folder of the Cache to get it working.
https://sakura.lazycat.info/archives/1018.html
Thanks for the heads-up man.
您不能打开应用程序“disk.app”,因为此类型的 Mac 不支持该应用程序。
macOS Sierra 10.12.4
选择保存的类型是应用程序,不能保存了再改名。
請問一下, 照著做可以產生ramdisk及瀏覽器用的快取資料夾, 雖然刪除了硬盤中的快取資料夾, 但是實際開啟瀏覽器後, 卻是硬盤與Ramdisk 都同時寫入一樣的資料, 硬盤等於還是被當做快取寫入, 為何不是僅ramdisk 有資料才對?
macOS 10.12.4
You can’t open the application “RamDisk.app” because it is not supported on this type of Mac.
你是怎么做的,我也是 10.12.4,没问题。保存的时候选择为应用程序,不能直接改名。