【问题标题】:Using too many PHP includes a bad idea?使用过多的 PHP 包含一个坏主意?
【发布时间】:2011-04-05 02:01:45
【问题描述】:

我的问题是使用多个 PHP 包含()是否是一个坏主意。我问的唯一原因是因为我总是听说网站上有太多样式表或脚本会创建更多 HTTP 请求并减慢页面加载速度。我对 PHP 也有同样的疑惑。

【问题讨论】:

    标签: php include server-side-includes


    【解决方案1】:

    包含的使用有助于代码组织,并且本身没有障碍。如果你正在加载一堆你不需要的东西,那会减慢速度——但这是另一个问题。澄清:当您包含页面时,请注意您要添加到负载中的内容;不要粗心地包含不需要的资源。

    【讨论】:

      【解决方案2】:

      这真的取决于你想做什么,我的意思是如果你有一段代码一直在使用,那么包含它真的很方便,而不是一直复制和粘贴,这将使你的代码更多清晰且不慢,但是如果您在文件中包含所有已编写的函数或类而不使用它们当然不是一个好习惯...我建议使用框架(例如 codeigniter 或其他您认为方便的东西),因为这真的有助于清除这些东西......祝你好运!

      【讨论】:

        【解决方案3】:

        详细答案:

        网页中引用的每个 CSS 或 JS 文件实际上都是由浏览器通过网络获取的,这通常涉及 100 毫秒或更长时间的网络延迟。对同一服务器的请求(按照惯例,虽然不是强制性的)一次序列化一个或两个,因此这些延迟会叠加。

        另一方面,PHP 包含文件都是在服务器本身上处理的。本地磁盘访问将是 10 毫秒或更短,而不是 100 毫秒,如果缓存,将是更快的直接内存访问。

        如果您使用 http://eaccelerator.net/http://php.net/manual/en/book.apc.php 之类的东西,那么您的 PHP 代码将全部在服务器上预编译一次,即使您是包含文件还是将它们全部转储到一个地方都没有关系。

        简短回答:

        别担心。 100 次中有 99 次出现此问题,更好的代码组织带来的好处超过了性能提升。

        【讨论】:

        • 我认为CSS等与PHP页面之间一定存在一些整体差异。非常感谢。
        • 你的回答最好的部分是解释 JS 和 CSS 是如何工作的。我希望更多的人能深入回答。谢谢! :D 顺便说一句,我偶然发现了这个项目,这是一个像上面的工具一样预编译代码的工具吗?
        • 当使用操作码缓存时,包含更多(=更小的文件),比 Everything-in-one-huge-file 快一点。但是你不应该担心这个。而是专注于代码的可读性。
        【解决方案4】:

        我问的唯一原因是因为 我总是听说有太多 网站上的样式表或脚本 创建更多 HTTP 请求并减慢速度 页面加载。我也想知道 关于 PHP。

        请注意,HTTP 请求比 PHP 包含的请求慢几个数量级。

        几个 HTTP 请求 -> 客户端必须通过网络请求和接受多个文件
        几个 PHP 包含 -> 客户端必须请求和接受一个文件

        显然,包含将有服务器惩罚。但是根据你的问题......不要出汗。只有真正大型的PHP项目才会遇到这样的问题。

        【讨论】:

          【解决方案5】:

          如前所述,使用多个 PHP 包含有助于保持您的代码井井有条,因此这不是一个坏主意。当使用过多的包含时,这将成为一个问题,因为 Web 服务器必须为您拥有的每个包含执行 I/O 操作。

          如果您有一个大型 Web 应用程序,您可以使用 PHP accelerator 来提升它,它将 PHP 字节码编译器中的数据和编译代码缓存在共享内存中。如果您在特定文件中有很多 PHP 包含,它们将只执行一次。对该文件的进一步调用将命中缓存,因此不会执行 PHP 要求。

          【讨论】:

            【解决方案6】:

            PHP 可以检测包含的文件,因为您可以使用 include_once() 函数而不是 include()。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-11-02
              • 1970-01-01
              • 2011-10-21
              • 1970-01-01
              • 2010-12-26
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多