【发布时间】:2011-01-17 01:40:06
【问题描述】:
此问题与 Web 应用程序有关。我的网络应用程序开发经验很少,所以可能会遗漏一些非常明显的点/问题。请指出来。
据我了解,在大多数 Web 应用程序中,Web 服务器通过网络将 HTML 发送到客户端(浏览器)。每次发出 HTTP 请求时都会发生这种情况。我觉得这样很浪费带宽。
1) 既然浏览器可以运行 JavaScript,我们为什么不直接发送一个 JavaScript 程序,它可以生成网页的 HTML 内容(浏览器随后呈现)。
2) 此外,浏览器可能会缓存 JavaScript 程序,下次服务器只需要发送数据。该协议可能涉及浏览器发送它拥有的“程序版本”。
考虑一个相对简单的网站 Hacker News [http://news.ycombinator.com].让我们将数据(30 个帖子 + 它们的元数据)与其呈现分开。假设上面的 1),服务器可以只发送数据(比如 JSON)+ 一个 JavaScript 程序来生成 HTML。这个gist 显示了这个想法。 30 个帖子的数据采用 JSON [http://www.json.org/js.html] 格式。对于这个特定示例,传输的数据被削减为 1/2(数据大小+JavaScript / HTML 大小)。此外,如果浏览器可以执行上述 2),它会将每次访问时传输的数据减少到 1/4(数据大小/HTML 大小)。 [注:此分析未考虑压缩; gzip,deflate 在减小 HTML 的大小方面非常成功。但预防胜于治疗吗?]
我至少看到了以下优点:-
* 对于大多数网页,它将减少通过网络传输的数据大小。
* 强制 Web 应用程序将数据与其演示文稿分开。
缺点可能包括 - 更复杂的浏览器、运行 JavaScript 程序以生成 HTML 的时间(这可能会因数据大小的减少而抵消)。
现在我的问题是 - 为什么不以这种方式开发 Web 应用程序,或者,为什么 Web 应用程序通过网络发送 HTML?当然,Web 服务器(发送 HTML)根本不关心 HTML,那么它为什么要首先生成它,然后通过网络发送呢?
【问题讨论】:
-
生成HTML的JS不会比HTML大吗?
-
有很多这样的网络应用程序。
-
像 GMail 这样的应用程序或多或少完全按照您说的做。通常,一个骨架 HTML 文件将来自服务器,但此后更新是通过客户端代码完成的,该代码解释对异步 HTTP 请求的更多“纯”数据响应。事实上,Stackoverflow 本身就做了很多。
-
另一方面,像 Hacker News 这样的应用程序应该在服务器上做尽可能多的事情,因为它的目标受众(程序员)往往是少数几个知道你可以转向的人群之一关闭 javascript,有时确实关闭 javascript 2. 知道您可以从普通的旧(非智能手机)手机浏览网页,有时会这样做。 3. 了解文本模式的用户代理,例如 elinks 和 lynx,甚至 wget 和 curl,并且实际上会不时使用它们。一般来说,如果你的网站是纯旧的 HTML,程序员会很感激。
-
搜索引擎对“程序结构”也不太满意。我相信 REST 风格与使用 Flash 或 Java 或任何其他“可脚本化”语言几乎相同的问题。因此,如果您没有静态的“h1”,那么您的标题就无法从 Google 等轻松找到。
标签: javascript html web-applications