【问题标题】:Is this an optimization?这是优化吗?
【发布时间】:2011-08-14 23:36:48
【问题描述】:

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">
  <?php echo file_get_contents('jquery.js'); ?>
</script>

真的加快速度吗?

我认为它确实如此,因为 php 可以比客户端浏览器对文件发出完整请求更快地获取和嵌入文件的内容,因为 php 不会通过网络。

主要区别是传统方式可以缓存吗?

【问题讨论】:

  • 影响缓存。
  • @GWW 将“可能”替换为“将”。 :)
  • 更快的是:&lt;script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"&gt;&lt;/script&gt; ;-)
  • @TJ 如果你担心速度,你不应该使用/1/;它不会缓存很长时间。
  • @yahelc,稳定性更令人担忧...

标签: php javascript http optimization


【解决方案1】:

可能第一次页面加载时更快,但在每次后续加载时它会慢得多。在第一个示例中,客户端浏览器将缓存结果。第二种,不能。

【讨论】:

    【解决方案2】:

    如果您在客户的生活中只提供过一个网站,那么可以,因为您只有一个 HTTP 请求,而不是两个。

    如果您要为所有链接到同一个 javascript 源文件的多个站点提供服务,那么您就是在复制所有这些冗余数据,并且没有给客户端缓存文件的机会。

    【讨论】:

      【解决方案3】:

      在这两种情况下,您都需要将字节传输到浏览器。唯一的区别是您在后一种情况下保存 HTTP 请求。 还要确保使用CDATAhtmlspecialchars 转义javascript。

      如果您在 HTML 页面中包含您的 JS 库,则浏览器无法对其进行缓存。将 JS 与普通 HTML 代码分开通常是一个好主意,因为浏览器可以缓存它并且不需要在后续请求中获取它。

      因此,简而言之,这是一种优化,仅当页面被用户调用一次并且 jquery 未在其他页面上使用时才有效。


      或者,您可能希望使用来自 google apis 的 jquery - 效果是它们通常位于浏览器的缓存中,因此根本不需要传输 lib。

      【讨论】:

      • 在 HTML 4.01 中,元素类型 SCRIPT 已经声明了内容类型 CDATA。
      • ...和htmlspecialchars 会非常糟糕地搞砸,比如if (a &lt; b) 这样的比较,将它们变成语法错误。
      • 我希望页面是 XHTML,而使用 XHTML 你必须转义它。
      【解决方案4】:

      它为那一页这样做。

      使用相同库的所有后续页面(从相同 URL 下载的 jquery.js)受苦,因为如果您包含对外部文件的引用,是的,它必须在额外的连接中下载(这对于 HTTP 来说相对便宜\1.1 和流水线),但是 - 如果您的网络服务器为它提供有用的标头(Expires:-header 在未来很远),浏览器会缓存下载的内容,而通过“优化”,它必须使用每个内容页面检索它.

      还可以查看类似这样的页面: http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

      (这里的关键词是与那些遥远的到期日期相关的“revving”)

      【讨论】:

        【解决方案5】:

        第一个更好,因为浏览器可以缓存脚本。对于第二个版本,即使脚本没有更改,每次加载页面时都必须重新下载脚本。

        第二个版本唯一一次是对浏览器无法缓存的脚本进行了改进。

        【讨论】:

          【解决方案6】:

          这取决于有多少文件使用同一个文件。但是,在大多数情况下,这会比您的第一段代码慢,主要是因为 jquery.js 可以被缓存。

          【讨论】:

            【解决方案7】:

            是的,这最初是关于用于服务页面的 HTTP 请求数量的性能优化 - 但是,您的页面将在每次页面加载后变得更大一些,因为 jquery.js 将在第一次之后缓存在浏览器中下载。

            【讨论】:

              【解决方案8】:

              如果您的页面是静态的,它会这样做。
              但是,如果它不是静态的,您的浏览器将在 jquery 没有改变但仍包含在内的时候下载页面。如果您使用src="jquery.js" 并且页面发生更改,浏览器将从缓存中加载jquery 而不会再次下载,因此使用src="jquery.js" 实际上更快。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-06-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-09-20
                • 1970-01-01
                相关资源
                最近更新 更多