在PHP中不加载未使用的脚本有多重要?

时间:2008-11-16 02:36:11

标签: php optimization

在90%的网页使用相同库的网站上,您是应该一直加载库还是仅在需要时加载它们?其他页面将是ajax或没有任何实际功能的简单页面。

另外,您是否只在需要时加载代码?如果你在页面的某个部分需要一个库,那么你应该加载它还是只在顶部加载它。也许它可能永远不会在错误或错误的数据之前到达那里。 (在顶部加载使其更容易理解,但可能导致不需要额外的代码。)

我也想知道我是否应该使这些库更具体,所以我不是说在查看的同时加载代码进行编辑?

基本上,我应该担心加载代码还是不加载代码?

4 个答案:

答案 0 :(得分:10)

我总是试图给文件,类和方法single responsibility。因此,在任何一种情况下,将显示与编辑代码分开都是个好主意。

至于加载库,我认为包含非必需库的性能损失在很多情况下可能完全不相关。但是,includerequireinclude_oncerequire_once相对较慢,因为它们(显然)访问文件系统。如果您在每次使用时不使用的库非常大并且通常自身包含许多不同的文件,则删除不必要的包含可以帮助减少在那里花费的时间。尽管如此,使用高效的缓存系统还可以大幅降低成本。

鉴于您使用的是PHP5并且您的库很好地分成了类,您可以利用PHP的auto loading functionality,其中包括PHP脚本需要的必需类。这样可以非常有效地避免包含大量未使用的代码。

最后,如果您做出任何可能影响您网站效果的更改,请运行一些基准并分析性能的获得或损失。这样,您就不会冒着做一些可能很酷的优化的风险,这些优化只需要花费太多时间来完全实现甚至降低性能。

答案 1 :(得分:3)

请记住,在运行时编译PHP时,每个加载的脚本都会被解析,因此加载不需要的脚本会受到惩罚。根据您的应用程序结构和要求,这可能很小,但有些情况并非如此。

你可以做两件事来否定这些担忧:

  1. 使用__autoload根据需要加载脚本。这样就无需维护一个长的“需求”脚本列表,只加载当前运行所需的内容。
  2. 使用APC作为字节码缓存来降低加载脚本的成本。 APC以编译状态缓存脚本,并为您的应用程序性能创造奇迹。

答案 2 :(得分:2)

+1投票支持自动加载技术。

使用自动加载的另一个好处是它消除了滥用代码的一些潜在可能性。如果出现问题,请弹出一个回溯和“included_files”列表,然后列出问题可能来自的地方。

这意味着如果有人在其中一个人的末尾隐藏恶意代码,或者设计一些果味,那么你可以搜索的文件较少。

我曾经在代码库上工作过一次(不是我的),其中URL中某些令牌的存在导致了意外的行为,并且由于代码很可怕,这是一个噩梦,追踪问题的根源在于其中一个200个包含的文件中的一个正在重写整个请求,然后调用“die”

答案 3 :(得分:2)

问题是“多么重要”。

答案:它根本不重要。如果您还没有运行此应用程序的十几台服务器,那么这可能是早期优化,而众所周知,早期优化是所有邪恶的根源。

换句话说:甚至不用担心。在您考虑这个问题之前,还有很多其他方法可以优化速度。