是否有一种方式可以将symfony 2缓存(app/cache)存储在文件系统之外的其他地方?例如Memcache、S3等等?是否有内置选项可供选择?
如果您想将其移动到项目目录之外,则需要在AppKernel类中重载getCacheDir()方法。
将其移动到Memcache的意义是什么?这个目录的内容大多数时候都是“编译”类和模板。这些文件已经被放入内存中了(APC已经做到了这一点)。
编辑:在开发过程中,很难避免I/O操作,但是您可以通过覆盖AppKernel的getCacheDir()
和getLogDir()
方法,将Symfony的缓存目录轻松地移动到内存中,将它们指向/dev/shm
:
class AppKernel extends Kernel
{
// ...
public function getCacheDir()
{
if (in_array($this->environment, array('dev', 'test'))) {
return '/dev/shm/appname/cache/' . $this->environment;
}
return parent::getCacheDir();
}
public function getLogDir()
{
if (in_array($this->environment, array('dev', 'test'))) {
return '/dev/shm/appname/logs';
}
return parent::getLogDir();
}
}
来源:http://www.whitewashing.de/2013/08/19/speedup_symfony2_on_vagrant_boxes.html
这篇文章介绍了如何在Vagrant虚拟机中加速Symfony2应用程序的方法。首先,可以使用NFS共享文件夹来提高文件访问速度。其次,可以通过安装APC或XCache等PHP缓存扩展来减少PHP脚本的编译时间。最后,可以使用Vagrant插件vagrant-cachier来缓存软件包和依赖项,以便在重建虚拟机时快速恢复它们。这些技巧可以显著提高Symfony2应用程序的性能。gaufrette://s3
。