是否在应用程序中使用 iframe

Posted

技术标签:

【中文标题】是否在应用程序中使用 iframe【英文标题】:Whether or not to use iframe in an application 【发布时间】:2013-02-11 08:59:29 【问题描述】:

我正在创建一个将 Web 套接字用于通知系统的应用程序。将应用程序放在 iframe 中是否更好,并且父级中的 Web Sockets 不会在每次加载页面时都没有新的连接?还是应该重新连接?

你有什么想法?

如果有人在 php 中有任何其他方法可以在不每 10 秒发送一次 AJAX 请求的情况下获得类似推送的通知,请告诉我。

谢谢。

【问题讨论】:

【参考方案1】:

这是您描述的选项之一。

该选项的问题是不会直接控制该内部 iframe 的内容,您需要在 iframe 的父级之间实现推送消息窗口通信,以便能够更改 iframe src 属性,在万一有人刷新父页面,iframe 应该刷新到实际状态,而不是初始页面。 第二个问题,根本不会有 SEO。所以你的页面不会被搜索引擎机器人抓取。如果 SEO 对您的应用程序很重要 - 那么这不是一个选择。 在 WebSockets 中,如果您使用会话,重要的是使会话可用于普通 PHP 脚本和 WebSockets 逻辑,以保持对自身数据的一致访问。 PHP 将使它根本不是一件容易的事。

您也可以考虑使用 Long Pull 技术,因为它允许打开一个 AJAX 请求然后获取响应,并且此请求可以持续一段时间但最终会关闭并且必须在客户端重新打开。

另一种选择是查看实际应用程序架构,并考虑单页应用程序。它也有优缺点。 好处是用户体验会更高。响应时间以及您将加载更少的内容和数据。 优点是它需要在 javascript 的前端进行大量开发。还有两条主要路线可以让您进行单页应用程序。一致和不一致。在第一种情况下,您需要确保您的后端将在刷新或仅导航到特定链接时提供静态 html,就像您的单页应用程序使用 java-script 生成的方式一样。然后它解决了 SEO 的问题。虽然方法不一致,但纯粹是在 javascript(前端)上,并且会遇到 SEO 问题。

WebSockets 通常用于单页应用程序,例如 Facebook 聊天就是一个很好的例子。或在您使用 Gmail 帐户时使用 Google Talk。 它们不适用于经常刷新的页面,因为握手过程比正常的 HTTP 请求要重一些。

【讨论】:

没有 SEO 很好,这是公司内部的应用程序。感谢您的帮助,让我更清楚了。

以上是关于是否在应用程序中使用 iframe的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从内部更改 iframe 的宽度/高度

是否可以为 iframe 设置 Origin Header?

在 iframe 内容中发出跨域 ajax 请求是不是可行?

是否可以在 iFrame 中使用 JavaScript 获取 iFrame 父页面的引用者?

不使用 IFrame 的原因?

检查网站是不是不允许嵌入 iframe