PHP include()或JS src是否更快地包含文件?

时间:2013-12-07 00:43:55

标签: javascript php html client-side server-side

有时当我需要在许多网页中包含相同的元素组时,我使用PHP:

<?php include "somefile.html" ?>

somefile.html是这样的:

<h1>TITLE</h1>
<h2>Subtitle</h2>

有时,当我懒得使用PHP并打开我的本地服务器时,我使用JS:

<script src="somescript.js"></script>

somescript.js如下:

document.write(
    "<h1>TITLE</h1>" +
    "<h2>Subtitle</h2>"
);

第二个版本稍微不方便,但我使用两种方式。

但是,我想知道哪种方式是习惯性的,哪种方式更快。<​​/ p>

我知道PHP是服务器端,并且首先被解析为HTML,但即使它在JS之前加载,我也不知道它是否更快。因为JS是客户端的,所以它是由浏览器解析的,可能比向服务器发送请求更快(虽然我不完全确定 - 告诉我我是否做出了不正确的推断)。

如果我不清楚,请随时告诉我,并将我重定向到另一个可能有用的页面。

感谢。

3 个答案:

答案 0 :(得分:5)

第二种方式不仅表现更差,而且由于document.write()的工作方式,可能会删除整个页面。您不应该使用document.write(),除非您非常确定需要,这很少见。我所知道的唯一可以接受的情况是cdn传递的javascript的后备。您可以使用它来编写本地副本的脚本标记,如下所示:

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>window.jQuery || document.write('<script src="sys/lib/jquery.js"><\/script>')</script>

请考虑您所包含的脚本位于服务器上,因此必须为其发送请求,并且必须在页面继续或完成加载之前加载该脚本。服务器可能刚刚开始发送该数据。

答案 1 :(得分:3)

第一种肯定是更习惯,更有效,更快。

这些是我可以指出的行动,只需从非常高的层次上统计网络和i / o交互。

php包括:

  • 用户请求
  • apache进程
  • 来自光盘的php进程
  • apache发送数据以供显示

js包括:

  • 用户请求
  • apache进程
  • (假设html扩展名未由php处理)
  • apache发送数据以供显示
  • js告诉浏览器包含另一个文件
  • apache处理另一个文件的请求
  • apache发送包含的数据
  • js process显示数据

答案 2 :(得分:0)

服务器的第一种方法较慢,而客户端的第二种方法较慢。但实际上,这两种方法对于正常使用情况应该足够快。我会推荐第一种方法。