【问题标题】:PageSpeed Insights and php includePageSpeed Insights 和 php 包括
【发布时间】:2021-11-19 01:25:51
【问题描述】:

我正在清理网页(HTML 和 PHP)代码以改进 PageSpeed Insights 报告,我注意到使用 PHP include(或 include_once)的结果不好.

为了在页面之间共享公共代码,我使用将代码复制到外部文件(即 inc_header.php )并将它们包含在更多页面中。这是一种综合实践。

今天,如果我使用几个包含的文件测试静态页面或同一页面,我注意到 PageSpeed 中的相关不同结果。

PHP 是否包含影响 PageSpeed Insight 分数?我能做些什么来防止这种情况发生?

【问题讨论】:

  • 谁告诉你复制文件的内容而不是包含它会提高性能?
  • 我做了两个测试,发现测试差异让我很惊讶。
  • @Uncoke 请检查this answer。如果服务器端配置不当,PHP 脚本执行速度可能会成为问题。因此,TTFB 对于静态 HTML 页面的可能差异。
  • 由于 PHP 在服务器上运行,PageSpeed 无法检测到这样的包含。你见过的“坏结果”是什么?性能是不是更低了?结果看起来不一样吗?
  • @hassan 将包含的输出复制到页面可提高性能,因为不必执行 PHP。

标签: php html lighthouse pagespeed-insights


【解决方案1】:

include 可以做很多不可见的请求(例如数据库请求)来生成代码。如果您提供的页面没有服务器端包含,您将获得较低的 TTFB。换句话说:您看到的结果可以解释并且符合预期。

解决此延迟的一个常见技巧是使用静态站点生成器。 SSG 生成包含这些输出的静态页面(防止额外的请求)。

解决此问题的另一个技巧是使用缓存层。缓存层(几乎)与静态站点生成器相同。当您缓存(输出)您的请求时,您也会阻止这些不可见的请求。

【讨论】:

  • “包含可以做很多不可见的请求(例如数据库请求)来生成代码” - 你能分享更多关于这个的细节吗?如果使用完全相同的代码,但只是外包到不同的文件中(而不是单个文件),这些“隐形请求”应该如何弹出?
  • 我假设使用/复制了输出/生成的代码,而不是(相同的)代码。它们不会弹出,因为它们是服务器端请求。
猜你喜欢
  • 2021-06-22
  • 2015-03-20
  • 2018-03-10
  • 2019-05-07
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2016-12-24
  • 2019-07-09
相关资源
最近更新 更多