我网站上的每个页面都是使用PHP呈现的。
每个PHP文件使用大约10个包含。因此,对于显示的每个页面,除了其余的功能(MySQL等)之外,服务器还需要获取10个文件。
我应该将它们合并到一个包含文件中吗?这会对现实世界的速度产生什么影响?这不是一项微不足道的任务,因为会有一个可变范围的意大利面要整理。
答案 0 :(得分:24)
包含文件在服务器上处理,因此浏览器不会“获取”它们。使用包括与复制和粘贴代码或合并文件的性能差异是如此微不足道(我猜我们在10毫秒到100毫秒的范围内谈论,绝对最多),它不是完全值得。
根据您的内心,随意include
和require
。清理代码比削减页面加载少于100毫秒的重要性更重要。如果你正在构建时间紧迫的东西,那么你不应该使用PHP。
答案 1 :(得分:3)
需要花时间确定文件实际位于包含路径中的位置。如果您在包含路径中有多个位置,PHP将搜索每个位置,直到找到该文件或失败(在这种情况下它会引发错误)。这就是为什么你应该在包含路径的顶部放置包含大多数包含文件的包含路径。
如果在include路径中使用绝对路径,PHP将在实际路径缓存中缓存路径,但请注意,这会很快变得陈旧。所以是的,包括十个文件可能比包含一个大文件慢,这仅仅是因为PHP必须更频繁地检查包含路径。但是,除非您的网络服务器是一台非常弱的机器,否则十个文件不足以产生影响。当包含数百个文件或有许多位置要搜索时,这只会很有趣,在这种情况下,你应该使用OpCode缓存。
另请注意,在包含文件时,最好在开头包含每个文件,因为您可能包含应用程序从未针对特定请求调用的文件。
参考
答案 2 :(得分:0)
虽然最大的表现者之间的磁盘I / O操作,但是常规站点不会注意到任何合理数量的包含。 在你遇到包含任何问题之前,你可能已经有了一些操作码缓存来消除这个问题。
答案 3 :(得分:0)
include\ and
要求只在服务器端打开文件,但这可能是时间的消耗,具体取决于硬件/文件系统等。
无论如何,如果可以,请使用autoloader
。只会以这种方式加载所需的文件。
然后,如果您认为包含的文件是减速的来源(我认为之前还有很多其他要点需要改进),您可以尝试自动合并文件。在开发时,每个类仍然有一个文件,但是您可以构建一个文件,其中包含每个类的定义,只有一个include
(类似cat <all your included file>.php > to_include.php
)。