1

目前我正在通过 iframe 加载一些外部网站来展示内容。但是,由于这些站点在地理位置上远离我的用户和我的服务器,所以对他们来说真的很慢。

我最近遇到了 php 方法 file_get_contents() 并读到它会更快,因为它的服务器端脚本。我的问题是,从用户的角度来看。file_get_contents 是否会比 iframe 更快地为我的用户加载外部站点,或者是否有其他一些 php 方法比 iframe 可以使用更快。

谢谢

4

3 回答 3

4

如果您在向客户端发送任何内容之前在服务器上获取所有这些站点,那么在您的服务器加载每个页面之前,客户端将什么也看不到。如果您使用 iframe,客户端将异步加载站点,并且会更早地看到一些内容。如果您的服务器会定期获取这些页面并缓存它们,那么您将拥有优势。

但是,在服务器上加载站点并嵌入它们的 HTML 也意味着您必须在服务器端进行大量处理来重写和修复这些站点具有的所有外部包含(样式表、Javascript、图像),因为它们是现在从不同的域提供服务。

简而言之:可能不会。

于 2013-02-26T09:20:06.407 回答
3

想一想,您将充当代理:

+---------------+                      +-------------+
| external site |<---far far away------| your server |
+---------------+                      +-------------+
                                              ^
                                              |
                                      +----------------+
                                      | client browser |
                                      +----------------+

这增加了另一层,但不会使外部站点更靠近任何人。结论:如果有的话,它会更慢。

于 2013-02-26T09:20:43.533 回答
0

仅使用问题file_get_contents()

  • 在 iframe 中,页面样式不会更改 iframe 内容的样式,而 php 上的 file_get_contents() 可能会导致样式混乱。
  • 如果您的站点获得大量流量,不断地从服务器查询外部链接可能会使您的服务器 ip 从外部服务器列入黑名单。

最佳解决方案是:

  • 加载外部文件并将其保存为 cron 作业。

  • 将文件与页面必备项(css 和 js)一起保存在您的服务器上。

  • 将此本地文件加载到 iframe 中,从而实现异步显示和快速的用户体验。

于 2013-02-26T09:29:11.537 回答