我想在PHP请求之间缓存一些数据,而不是在每次调用期间从数据库中提取数据。无论用户/会话如何,数据都适用。实现这一目标的最轻的方法是什么?我不能保证对驱动器的写访问权或要求APC。有没有办法用香草PHP实现这一点?谢谢!
答案 0 :(得分:11)
当你提出这个问题时,我想到了3种“方式”,但在我总结之前,让我说PHP不是为了做你想做的。查询(或累积)数据没有“通用”缓存系统。但是,您可以做几件事来加速页面加载和数据请求:
第一个会话相当明显,但只有在数据依赖于用户时才会使用它(如果不是试图避免它)。对于缓存文件,将需要写访问权限,但这是网站范围数据的最佳方法。只需使用序列化数组(普通文件)或XML数据,任何适合您的需求。最后一个是加速MySQL请求的好方法(如果它们每次都是相同的,并且您没有对系统的任何写访问权限)。您可以使用cached select
在数据库中缓存查询正如您所看到的,所有这些方法各有优缺点,但您可以随意使用它们。但需要注意的是,从文件或会话加载缓存数据需要时间,因此您应该检查缓存是否实际加快了请求!
答案 1 :(得分:2)
有许多“缓存”方式,数据库可以是其中之一。您可以尝试的另一个选项是XML文件,但这一切都取决于您的具体问题。
答案 2 :(得分:1)
如果您希望自己的网站运行良好,请务必尝试安装APC。 APC主要是/ opcode-cache,它可以极大地加速您的网站,但是我仍然会尝试为您提供一些快速的替代方案。
Redis是一个开源的,先进的 键值存储。它经常被提及 从那以后作为数据结构服务器 键可以包含字符串,哈希, 列表,集合和排序集。
redistogo.com提供5MB内存的免费redis服务器(FAST)。您接下来可以使用普通的vanilla redis-client(例如predis)连接到redis-server并缓存您的数据。
有没有办法实现这个目标 香草PHP?谢谢!
您可以尝试使用Cache_Lite(Vanilla库)并尝试写入/dev/shm(共享内存),但是您需要Linux操作系统。 introduction页面显示了基本内容。如果可能,您应该使用cache_dir => '/dev/shm'
// Set a few options
$options = array(
'cacheDir' => '/dev/shm',
'lifeTime' => 3600
);
您可以随时/也使用此软件包写入光盘(与内存相比较慢),但也可以缓存并加快您的网站速度。
答案 3 :(得分:0)
我不认为这是可能的。您仍然可以将数据预加载到PHP会话中一次,这肯定会减少数据库查询的数量。
答案 4 :(得分:0)
要拥有典型的系统/应用程序缓存,您需要文件系统写入权限或具有类似APC的功能。
缓存数据的唯一方法是将其设置为每个用户的会话,如果会话密钥“my-cache”不存在,则从数据库获取并设置为会话。就像使用任何其他缓存方法一样,您还必须考虑在数据更新时取消设置缓存等。
在客户端缓存应用程序数据根本不理想,但如果你需要缓存,缓存选项不可用,那么这是你唯一的选择。