使用太多的PHP包含是一个不好的想法吗?

16

我的问题是使用多个PHP include()是否一个不好的想法。我问这个问题的唯一原因是因为我总是听说在网站上有太多样式表或脚本会创建更多的HTTP请求并减缓页面加载速度。 我想知道PHP是否也是如此。

5个回答

31

详细解答:

网页中引用的每个 CSS 或 JS 文件实际上都是由浏览器通过网络获取的,这涉及到通常为 100 毫秒甚至更多的网络延迟。对同一服务器的请求(尽管没有强制规定)一次只能处理一两个,因此这些延迟会堆积。

另一方面,PHP include 文件则全部在服务器上进行处理。与数百毫秒相比,本地磁盘访问仅需要10毫秒或更少的时间,如果缓存,则直接访问内存,速度会更快。

如果使用 如http://eaccelerator.net/http://php.net/manual/en/book.apc.php 这样的工具,那么您的 PHP 代码将在服务器上预编译一次,而且即使是包含文件或将它们全部放在一个位置,性能也不会受到影响。

简短回答:

别担心这个问题。99 次中有 100 次,更好的代码组织方式的好处优于性能提升。


1
我认为CSS等和PHP页面之间必定存在某些本质差异。非常感谢。 - Smandoli
2
你回答的最好的部分是解释JS和CSS的工作原理。我希望更多的人能够深入回答问题。谢谢! :D顺便说一下,我偶然发现了这个项目,它是一个像上面的编译代码工具吗? - NessDan
当使用操作码缓存时,更多的包含(=较小的文件)比所有内容都在一个巨大的文件中要快一些。但是你不应该担心这个问题。相反,应该专注于代码的可读性。 - Jacco

5
使用include有助于代码组织,本身并不会造成障碍。如果你加载了许多不需要的东西,那么速度就会变慢——但这是另一个问题。澄清一下:在包含页面时,请注意你正在添加的内容;不要粗心地包含不需要的资源。

1

正如已经提到的,使用多个PHP包含文件有助于保持代码的组织性,因此这并不是一个坏主意。当使用太多的包含文件时,会成为一个问题,因为Web服务器将不得不为每个包含文件执行I/O操作。

如果您有一个大型的Web应用程序,可以使用PHP加速器来提高其性能,它可以将数据和编译后的代码从PHP字节码编译器缓存到共享内存中。如果在特定文件中有许多PHP包含文件,则它们将仅被执行一次。对该文件的进一步调用将命中缓存,因此不会执行任何PHP require操作。


0

这真的取决于你想做什么,我的意思是,如果你有一段经常使用的代码,那么把它包含进来会非常方便,而不是一直复制粘贴,这样可以使你的代码更清晰,也不会变慢。但是,如果你在文件中包含了所有你编写的函数或类,却没有使用它们,那当然不是一个好的实践...我建议使用一个框架(比如codeigniter或其他你觉得方便的框架),因为它真的有助于解决这些问题...祝你好运!


0
我问这个问题的唯一原因是,我经常听说在网站上有太多样式表或脚本会创建更多的HTTP请求并减慢页面加载速度。我也想知道PHP是否也是如此。
请注意,一个HTTP请求比一个PHP包含要慢几个数量级。
多个HTTP请求->客户端必须请求和接受多个文件 多个PHP包含->客户端只需请求和接受一个文件
显然,包含会对服务器产生负担。但是根据您的问题...不要担心。只有在真正大规模的PHP项目中,您才会面临这样的问题。

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