去落格博客阅读完整排版的OS X 开启 RamDisk 来为 Safari 和 Xcode 加速
随着 Xcode 的版本升级,速度越来越慢,尤其一言不合就“白板”的问题相信大家都会有遇到。
这是非常影响开发效率的事情。如果有可能,那么我们将 Xcode 的缓存文件放到内存,速度应该快很多。(虽然现在 rmbp 的 ssd 已经十分的快速了,但比起内存,还是差的很远——对于机械硬盘的老机器来说,提速就会更加明显了。)
——还记得 Windows 的那个 RamDisk 吗?其实 Linux 也有,而且不需要第三方的软件,一条自带的命令就可以完成了!
我们的目标就是从内存里划出一部分空间,把它格式化为硬盘挂载的系统当中,专门用来放缓存!
既然是内存,那么关机内容是肯定会丢失的,所以我们仅仅用它来存放可以再生成的缓存,可以再下载的内容也不应该放在里边。比如 OS X 里的 helpd 下载的帮助文件,就不应该放在里边。
你的内存总空间是多少,分配的内存硬盘体积就应该相应地改变大小,毕竟将内存划走了固定的一块,比如我这里用的是1GB,那么我原本的8GB内存就变成了7GB大小。
打开 OS X 自带的脚本编辑器 ,新建一个文档,其它默认,然后在里边写入:
do shell script " if ! test -e /Volumes/\"Ramdisk\" ; then diskutil erasevolume HFS+ \"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 "
然后把它保存成
.app格式:
双击执行就可以自动挂载一个叫做“RamDisk”的硬盘了,这个硬盘里的内容会在电脑重启后清空,大小是1GB,如果你把它推出了,那么里边的东西也会丢失,所以务必存放缓存文件。
生成之后,我们就来把其它应用的缓存替换过来,对于 Xcode 来说,你可以在应用里直接设置,不过我们这里统一使用目录替换的方式,好处是一些不支持配置的比如 Safari ,我们也能手动把它的缓存目录替换到内存中,对应用透明。
这里我们替换三个应用,首先退出它们:Safari Chrome Xcode
然后删除这些应用的缓存目录:
sudo rm -rf ~/Library/Developer/Xcode/DerivedData sudo rm -rf ~/Library/Caches/com.apple.Safari sudo rm -rf ~/Library/Caches/Google
这些目录里的文件都是可以随时删除的,你重新打开就会自动建立,你的数据都不会丢失。
然后根据我们在内存硬盘中建立好的目录来创建目录链接,就像是 Windows 里的快捷方式,但比那个好用多了:
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文件即可。
如果要删除整个方案,那么只需要先去下面的目录把创建的链接文件删除,再去掉那个脚本的启动项就好了:
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 生成的缓存文件,然后再编译。
往好的方面想,即使重新生成缓存文件,速度也还是比固态要快的,还不会降低硬盘的读写寿命。