SSI或PHP Include()?

13

基本上,我即将推出一个网站,我预测会有很多流量。为了情景的缘故,假设我每天会有100万个独特的访问者。数据将是静态的,但我也需要包含其他文件。

我只会在另一个html页面中嵌入一个html页面,没有任何动态内容(我有我的原因不愿意透露,以保持简单)。

我的问题是,就性能而言,哪种方式更快?

<!--#include virtual="page.htm" -->
或者
<?php include 'page.htm'; ?>
5个回答

10

在性能方面,最快的方法是将模板存储在其他地方,生成完整的HTML,并根据模板的更改重新生成。

如果你真的想比较PHP和SSI,我想SSI可能会更快,而且更重要的是:不需要PHP会更轻量级,占用的内存更少,从而使您可以拥有更多的Apache线程/进程来处理请求。


2

SSI内置于Apache,而Apache必须生成PHP进程来处理.php文件,因此我预计SSI会更快,更轻。

虽然如此,我同意前面的答案,选择PHP路线将为您提供更多的灵活性以便在未来进行更改。

实际上,在大局观中,任何速度差异都可能是微不足道的。


生成一个PHP进程?你从没用过mod_php或FastCGI吗? - Bill Karwin
我不完全确定为什么在编写这个时我会想到普通的CGI;我几乎总是使用mod_php来提供PHP服务。 - John Flatness

2

尽管这只适用于用户可以访问其服务器根目录的情况,但我喜欢这个答案。如果我的服务器没有配置cPanel,我会尝试这个方法。(cPanel让我不想去烦恼任何事情。) - animuson
@animuson:我希望一个期望每天获得100万独立访客的网站不会使用消费级托管站点,而是拥有可以在自己的专用服务器上任意配置软件的权限。 - Bill Karwin
如果您的主机提供良好的客户服务,您可能可以通过电话与他们联系并让他们为您安装它。特别是如果这意味着减轻他们服务器的负载。 - Greg Guida

1

我认为没有人能够为您明确地回答这个问题。这取决于您的Web服务器配置、操作系统和文件系统选择、SSI使用的复杂程度、服务器上其他竞争进程等等。

您应该准备一些样本文件并在您打算部署的服务器上运行测试。使用一些HTTP测试工具,如absiegehttperfjmeter来生成一些负载并比较这两种方法。这是获得适合您环境的正确答案的最佳方法。

使用 mod_php 和一个类似 APC 的opcode缓存一起使用的话,可能会非常快,因为它会自动缓存高需求的文件。如果你关闭 apc.stat ,它就完全不需要访问磁盘来提供PHP脚本(但这样做会使得在运行中的系统上更新PHP脚本更加困难)。

你还应该确保遵循其他高可扩展性的最佳实践。使用CDN来处理静态资源,优化你的脚本和样式表等。购买Steve Souders的书籍以及TheoGeorge Schlossnagle的书籍,并从头到尾阅读它们。


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接