Javascript PHP include()或JS src包含文件的速度更快吗?

Javascript PHP include()或JS src包含文件的速度更快吗?,javascript,php,html,client-side,server-side,Javascript,Php,Html,Client Side,Server Side,有时,当我需要在许多网页中包含同一组元素时,我会使用PHP: <?php include "somefile.html" ?> 有时,当我懒得使用PHP并打开本地服务器时,我会使用JS: <script src="somescript.js"></script> 第二个版本只是稍微有点不方便,但我使用两种方式 然而,我想知道哪种方式是习惯的,哪种方式更快 我知道PHP是服务器端的,并且首先被预解析为HTML,但即使它在JS之前加载,我也不知道它是否更快。因

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

<?php include "somefile.html" ?>
有时,当我懒得使用PHP并打开本地服务器时,我会使用JS:

<script src="somescript.js"></script>
第二个版本只是稍微有点不方便,但我使用两种方式

然而,我想知道哪种方式是习惯的,哪种方式更快

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

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


谢谢。

第二种方法不仅性能更差,而且是一种糟糕的做法,可能会因为
document.write()
的工作方式而删除整个页面。你不应该使用
document.write()
,除非你非常确定你需要,这是很少见的。我所知道的唯一可以接受的情况是cdn交付的javascript的回退。您可以使用它为本地副本写入脚本标记,如下所示:

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

window.jQuery | | document.write(“”)

考虑到您要包含的脚本在服务器上,因此必须为它发送请求,并且必须在页面继续或完成加载之前加载它。服务器可以从一开始就发送数据。

第一种方式肯定更习惯、更高效、更快

这些是我可以指出的操作,可以从一个非常高的级别简单地计算网络和I/o交互

php包括:

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

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

第一种方法对于服务器较慢,第二种方法对于客户端较慢。不过,在实践中,这两种方法对于正常用例都应该足够快。不过,我还是推荐第一种方法。

当您关心速度时:测量它。关于“因为JS是客户端的,所以它由浏览器解析,可能比向服务器发送请求更快”-您仍然需要向服务器发送请求以获取原始HTML,然后浏览器向服务器发出第二个请求以获取js include。这无疑是一种非常糟糕的方法,除非你绝对不能在服务器上使用某种脚本/应用程序来动态填充它。@Jon你总是有工具来衡量这一点。你有一个现代化的浏览器,不是吗?它对我来说不合适——另外,我可以使用
document.getElementById(“someID”).innerHTML
而不是
document.write()
@Jon是的,这是一种向dom添加标记的适当方式,但如果标记已经来自服务器,那么从服务器提供它会更有效(除非在页面加载后对ajax有意义——比如用户单击按钮时加载内容等)。
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>window.jQuery || document.write('<script src="sys/lib/jquery.js"><\/script>')</script>