基本上,我即将推出一个网站,我预测会有很多流量。为了情景的缘故,假设我每天会有100万个独特的访问者。数据将是静态的,但我也需要包含其他文件。
我只会在另一个html页面中嵌入一个html页面,没有任何动态内容(我有我的原因不愿意透露,以保持简单)。
我的问题是,就性能而言,哪种方式更快?
<!--#include virtual="page.htm" -->
或者<?php include 'page.htm'; ?>
基本上,我即将推出一个网站,我预测会有很多流量。为了情景的缘故,假设我每天会有100万个独特的访问者。数据将是静态的,但我也需要包含其他文件。
我只会在另一个html页面中嵌入一个html页面,没有任何动态内容(我有我的原因不愿意透露,以保持简单)。
我的问题是,就性能而言,哪种方式更快?
<!--#include virtual="page.htm" -->
或者<?php include 'page.htm'; ?>
在性能方面,最快的方法是将模板存储在其他地方,生成完整的HTML,并根据模板的更改重新生成。
如果你真的想比较PHP和SSI,我想SSI可能会更快,而且更重要的是:不需要PHP会更轻量级,占用的内存更少,从而使您可以拥有更多的Apache线程/进程来处理请求。
SSI内置于Apache,而Apache必须生成PHP进程来处理.php文件,因此我预计SSI会更快,更轻。
虽然如此,我同意前面的答案,选择PHP路线将为您提供更多的灵活性以便在未来进行更改。
实际上,在大局观中,任何速度差异都可能是微不足道的。
我认为没有人能够为您明确地回答这个问题。这取决于您的Web服务器配置、操作系统和文件系统选择、SSI使用的复杂程度、服务器上其他竞争进程等等。
您应该准备一些样本文件并在您打算部署的服务器上运行测试。使用一些HTTP测试工具,如ab或siege或httperf或jmeter来生成一些负载并比较这两种方法。这是获得适合您环境的正确答案的最佳方法。
使用 mod_php 和一个类似 APC 的opcode缓存一起使用的话,可能会非常快,因为它会自动缓存高需求的文件。如果你关闭apc.stat
,它就完全不需要访问磁盘来提供PHP脚本(但这样做会使得在运行中的系统上更新PHP脚本更加困难)。
你还应该确保遵循其他高可扩展性的最佳实践。使用CDN来处理静态资源,优化你的脚本和样式表等。购买Steve Souders的书籍以及Theo和George Schlossnagle的书籍,并从头到尾阅读它们。