PHP 包含 CDN 上的静态远程 HTML 文件

PHP Include for static remote HTML files on a CDN

我有一个创建静态 HTML 文件的应用程序。这些文件旨在托管在远程 CDN 上,它们将是标准的 .html 文件。

我想知道两件事:

  1. 是否可以对这些文件进行 PHP 包含?
  2. 你这样做能有好的表现吗?

可以做到吗?

直接回答问题,是的,从技术上讲,您可以使用 PHP include 函数包含一个远程文件。为此,您只需在 php.ini.

中将 allow_url_include 指令设置为 On

根据您打算将其用于什么目的,我也鼓励您查看 file_get_contents

要为 file_get_contents 启用远程文件,您需要将 allow_url_fopen 设置为 On

应该做吗?

直接回答你的第二个问题,有很多因素将决定你是否会获得良好的性能,但总而言之,它不太可能对性能产生显着影响。

不过,还有其他注意事项:

  • 从安全角度来看,ill-advised 启用其中一个指令
  • 通过从您的服务器而不是 CDN 传送文件,您将否定 CDN 的所有优势(见下文)
  • 真的有必要吗?

CDN

关于 CDN 的一个常见误解是他们所做的只是从更近的位置提供您的数据,因此它使请求稍微快一些......这是错误的!

CDN 的好处无穷无尽,但我在下面列出了一些(显然取决于配置和提供商):

  • 他们删除了不必要的 headers
  • 没有发送 cookie,因为 CDN 往往在不同的地方,因此 cookie-free,域
  • 他们处理压缩
  • 他们从最近的位置传送您的内容
  • 他们处理缓存
  • ...还有更多

通过从您的服务器提供文件,您将失去上述所有好处,当然,除非您将服务器设置为以相同方式处理请求(这可能需要时间)。

总结;就个人而言,我会避免将您的 .html 文件远程包含到 PHP 中,而是直接从 CDN 将它们提供给客户端。

要了解如何进一步优化您的站点,并了解大多数 CDN 提供的许多好处,请查看 GTMetrix