代码之家  ›  专栏  ›  技术社区  ›  bradym

在PHP站点缓存大量页面

  •  5
  • bradym  · 技术社区  · 15 年前

    我参与了一个项目,最终将在现有网站上创建大约1000万个新页面。站点和新项目都是用codeigner构建的,并连接到mysql。

    我以前从未处理过这种规模的站点,我担心我们应该如何处理缓存。有没有人处理过这种大小的PHP站点上的缓存,可以给我一些指针?我习惯了CodeIgniter缓存系统和类似的系统,但是缓存文件的数量会让我担心。

    任何建议都将不胜感激。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Bruce Alderson    15 年前

    PHP和CodeIgniter有几个可用的缓存层,但是您不必担心标准Linux服务器上缓存的文件数量(各种文件系统可以处理每个装载点上数亿个文件)。但要选择缓存方法,需要仔细测量。

    选项:

    • 操作码缓存(zend,eaccelerator, and more )
    • CodeIgniter视图缓存(每个视图配置)
    • CodeIgniter读取查询缓存
    • 常规Web缓存( more info )
    • 优化数据库( more info )

    (等等)

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

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

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

        2
  •  2
  •   timdev    15 年前

    我没有做过这种规模的工作,但是我认为基于文件的缓存没有问题,只要缓存机制不是完全愚蠢的,并且您使用的是现代的文件系统。在目录树中分发缓存文件已经足够智能了。

    如果你担心,那很好。当然,我建议您围绕CI的内置机制编写一个包装器,这样您就可以轻松地将其换成其他的东西(比如Zend_缓存,可能是使用一个强大的memcached服务器,或者是您自己设计的更智能的基于文件的系统)。

        3
  •  0
  •   Kristoffer Bohmann    15 年前

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

        4
  •  0
  •   Elzo Valugi    15 年前

    所有大人物都用 APC . 网页数量不相关。 相关数字是点击数(页面视图)。 如果你设计的是速度沟的窗户机器。