【问题标题】: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 服务器上缓存文件的数量(各种文件系统每个挂载点可以处理数亿个文件)。但是要选择缓存方法,您需要仔细衡量。

      选项:

      • 操作码缓存(Zend、eAccelerator、and more
      • CodeIgniter 视图缓存(按视图配置)
      • CodeIgniter 读取查询缓存
      • 一般网络缓存 (more info)
      • 优化您的数据库 (more info)

      (等等)

      此外,您可以通过使用内存文件系统和内存表来改进文件缓存。

      真正的问题是,您如何选择缓存策略?容量规划。您可以根据最佳理论对系统(用户、帐户、页面、文件)进行建模、模拟、测量和添加缓存。再次测量。产生新的理论和测量,直到找到适合您所需规模的方法。

      根据我的经验,视图缓存和 Web 缓存对于广泛阅读的网站(例如 WPSuperCache)来说是一大收获。操作码缓存(和其他形式的最小化)对于高度动态的站点很有用,数据库性能调整也是如此。

      【讨论】:

        【解决方案3】:

        仅供参考:如果系统在 Windows 服务器上运行:Windows 可以(可能?)最大。有大约。一个文件夹中有 65.000 个文件,包括缓存文件夹。不确定此上限是否已在较新版本中修复。

        【讨论】:

          【解决方案4】:

          所有大人物都使用APC。 网页数量不相关。 相关数字是点击次数(pageviews)。 如果你为速度而设计,请放弃 Windows 机器。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-05
            • 2018-11-08
            • 1970-01-01
            • 2015-10-13
            • 1970-01-01
            • 2016-04-04
            相关资源
            最近更新 更多