【问题标题】:Caching large number of pages on php site在php站点上缓存大量页面
【发布时间】:2010-12-17 16:29:37
【问题描述】:
我参与了一个项目,该项目最终将在现有网站上创建大约 1000 万个新页面。该站点和新项目是使用 CodeIgniter 构建并连接到 MySQL。
我以前从未处理过这种规模的网站,我担心我们应该如何处理缓存。有没有人处理过这种大小的 PHP 站点上的缓存问题,可以给我一些指导?我已经习惯了 CodeIgniter 缓存系统和类似的系统,但是会创建的缓存文件的数量让我很担心。
任何建议将不胜感激。
【问题讨论】:
标签:
php
mysql
caching
codeigniter
【解决方案1】:
我还没有做过如此规模的任何事情,但我认为基于文件的缓存没有问题,只要缓存机制不是完全愚蠢的,并且您使用的是现代文件系统。在整个目录树中分布缓存文件已经足够聪明了。
如果您担心,那很好。当然,我建议围绕 CI 的内置机制编写一个包装器,以便您可以轻松地将其换成其他东西(例如 Zend_Cache,可能带有强大的 memcached 服务器,或者您自己设计的一些更智能的基于文件的系统) .
【解决方案2】:
PHP 和 CodeIgniter 可以使用多层缓存,但您不必担心标准 linux 服务器上缓存文件的数量(各种文件系统每个挂载点可以处理数亿个文件)。但是要选择缓存方法,您需要仔细衡量。
选项:
(等等)
此外,您可以通过使用内存文件系统和内存表来改进文件缓存。
真正的问题是,您如何选择缓存策略?容量规划。您可以根据最佳理论对系统(用户、帐户、页面、文件)进行建模、模拟、测量和添加缓存。再次测量。产生新的理论和测量,直到找到适合您所需规模的方法。
根据我的经验,视图缓存和 Web 缓存对于广泛阅读的网站(例如 WPSuperCache)来说是一大收获。操作码缓存(和其他形式的最小化)对于高度动态的站点很有用,数据库性能调整也是如此。
【解决方案3】:
仅供参考:如果系统在 Windows 服务器上运行:Windows 可以(可能?)最大。有大约。一个文件夹中有 65.000 个文件,包括缓存文件夹。不确定此上限是否已在较新版本中修复。
【解决方案4】:
所有大人物都使用APC。
网页数量不相关。
相关数字是点击次数(pageviews)。
如果你为速度而设计,请放弃 Windows 机器。