包含不必要的php文件会减慢网站速度吗?

时间:2010-02-04 08:31:04

标签: php web include backend

这个问题可能会促使一些人几乎立刻说出肯定的肯定或否定,但请继续阅读......

我有一个简单的网站,其中有30个php页面(每个都有一些php服务器端代码+ HTML / CSS等...)。没有复杂的等级,没有。只需30页。

我还有一组纯后端的php文件 - 那些具有将内容保存到数据库,进行身份验证,发送电子邮件,处理订单等的代码的文件。这些将被这30个内容页面重用。

我有一个我发送参数的主php文件。这指定了这30个文件中的哪一个是必需的,并且它包括适当的内容页面。但是其中每一个都可能需要包含可变数量的后端文件。例如,一个内容页面可能不需要后端,而另一个可能需要数据库代码,而其他内容可能需要电子邮件,数据库和身份验证代码等......

我猜任何后端页面都是必需的,可以包含在相应的内容页面中,但路径中的一个小变化我必须编辑数十个文件。在主php文件中检查请求哪个内容页面(switch-case类型的东西)并包含适当的后端文件将太麻烦了。同样,如果单个路径发生变化,我必须进行许多更改。

懒惰,我在主文件中包含了所有后端文件,因此没有内容页面可以请求未包含的内容。

第一个问题 - 这是一个好习惯吗?如果是由任何人完成的话。

其次,是否存在性能问题或由于我而导致的任何问题,包括所有后端文件,无论是否需要它们?

修改

该网站每天访问量达到3000到4000次。

9 个答案:

答案 0 :(得分:7)

你应该做基准测试。使用不同的包含执行相同页面的时间。但我想这对30个文件没什么影响。

但是你可以节省时间,只需在php.ini中启用APC(它是PECL扩展,所以你需要install它)。它将缓存文件的已解析内容,这将显着加快速度。

顺便说一句:懒惰没有问题,甚至是virtue;)

答案 1 :(得分:4)

如果您的网站是面向对象的,我建议您使用自动加载(http://php.net/manual/en/language.oop5.autoload.php)。

这使用魔术方法(__autoload)在需要时寻找一个类(它很懒,就像你一样!),所以如果一个特定页面不需要所有类,它就不必得到它们!

但是,这又取决于它是否面向对象......

答案 2 :(得分:1)

它会减慢您的网站速度,但可能不是一个显着的数量。但是,它似乎不是一种组织应用程序的健康方式;我想重新考虑一下。尝试将应用程序逻辑(例如,大多数服务器端代码)与表示层(例如HTML / CSS)分开。

答案 3 :(得分:1)

如果文件很小并且只包含定义和设置,那么这不是一个坏习惯。 如果他们实际运行代码,或者非常大,则会导致性能问题。 现在 - 如果你的网站每小时有3个访问者 - 谁在乎,如果你有30000 ...这是另一个问题,你需要更加努力地将其减少。

答案 4 :(得分:0)

您可以使用XCache迁移PHP代码编译的一些缺点。这个PHP模块将缓存PHP操作码,从而减少编译时间和性能。

答案 5 :(得分:0)

考虑到您网站的大小;如果你没有注意到减速,为什么要尝试解决它?

对于大型网站,首先应该安装APC。尽管您当前的包含文件的方法可能无法从APC中获得尽可能多的好处,但APC仍然会做出惊人的工作来加快速度。

如果响应速度仍有问题,您应该考虑将所有文件包括在内。 APC会将源文件的缓存版本保留在内存中,但只有在没有条件包含的情况下才能做到这一点。

只有当您的PHP应用程序处于内存耗尽风险的大小时(请注意,对于大多数大型网站而言,内存不是瓶颈),您可能希望有条件地包含应用程序的某些部分。

Rasmus Lerdorf(PHP背后的男人)同意:http://pooteeweet.org/blog/538

答案 6 :(得分:0)

正如其他人所说,它不应该减慢很多东西,但它不是“理想的”。

如果主要问题是你懒得去改变所有包含文件的路径(如果将来需要更新路径)。然后,您可以使用常量来定义主文件中的路径,并在需要包含/需要文件时随时使用常量。

define('PATH_TO_FILES', '/var/www/html/mysite/includes/go/in/here/');

require_once PATH_TO_FILES.'database.php';
require_once PATH_TO_FILES.'sessions.php';
require_once PATH_TO_FILES.'otherstuff.php';

这样,如果路径发生变化,您只需要修改一行代码。

答案 7 :(得分:-1)

我生活在“尽可能少包含,尽可能多”,所以我通常只包括我的配置和会话处理,然后每个页面包含他们需要使用config include中定义的包含路径,所以对于路径更改,您仍然只需要更改一个文件。

如果你包含所有内容,那么在你获得大量页面点击(每秒几次点击)之前,减速将不会引人注意,所以在你的情况下只包括一切可能没问题。

答案 8 :(得分:-1)

这确实会减慢您的网站速度。大多数是因为PHP的加载和处理相对较慢。您想要包含的代码越多,应用程序就越慢。