为什么Web应用程序通过网络发送HTML?

na_*_*_na 8 html javascript web-applications

这个问题与Web应用程序有关.我的Web应用程序开发经验非常少,因此可能会遗漏一些非常明显的要点/问题.请指出它们.

据我所知,在大多数Web应用程序中,Web服务器通过网络将HTML发送到客户端(浏览器).每次发出HTTP请求时都会发生这种情况.我觉得这非常浪费带宽.

1)由于浏览器可以运行JavaScript,为什么我们不发送一个JavaScript程序,它可以生成网页的HTML内容(浏览器然后呈现).

2)此外,浏览器可能会缓存JavaScript程序,下次服务器只需要发送数据.协议可能涉及浏览器发送它的"程序版本".

考虑一个相对简单的网站Hacker News [ http://news.ycombinator.com]的例子.让我们将数据(30个帖子及其元数据)与其演示文稿分开.假设上面1),服务器可以只发送数据(比如用JSON)+一个JavaScript程序来生成HTML.这个要点表明了这个想法.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,那么为什么要首先生成它,然后通过网络发送它?

cor*_*ard 5

出现这种情况的明显原因是,当我们开始发送 HTML 时,JavaScript 还不存在,而 HTML 是对发送纯文本文档的改进。

我们现在不这样做的原因是:我们避开那些不是真正问题的问题的复杂解决方案。

平均互联网连接每秒下载近 1M 字节,并且 Web 浏览器非常擅长解析并开始渲染此 HTML,甚至在它准备就绪之前。它们还擅长并行下载页面上的资源。如果我们想以一些计算周期为代价来节省一些字节,我们可以在发送内容之前对内容进行压缩。问题解决了。

郑重声明,我们在复杂的网页中使用 AJAX 来实现这一点(查看 Github 的源代码浏览,了解这是多么棒的一个很好的例子)。


tob*_*ies 5

有几个原因,其中一些是历史性的,这绝不是一个完整的清单,而只是我的一些经验:

  1. HTML早于JS,许多脚本和库早于JS
  2. 较旧的浏览器(认为IE <= 6)具有垃圾,不一致的JS引擎,它们的渲染引擎在处理HTML方面更加一致.如此多的库和脚本早于一致的 JS
  3. 调试按照你的建议编写的应用程序是一个噩梦,如果它们没有正确构建(我的工作中有一个,找到一块html实际生成的位置需要30分钟)
  4. 要做到这一点还有很多工作要做 - 为什么不使用模板或静态文档或更简单的东西
  5. 这不是一个真正的问题 - HTML压缩得非常好
  6. 什么你的建议做-它被称为AJAX(OK,所以Ajax是比这更普遍,但大家都知道我的意思)
  7. 它根本不适用于大多数纯文本用户代理,包括大多数搜索引擎使用的代理.如果此页面为您的大部分内容提供服务,那么通常最好让Google轻松解析


Jam*_*mes 2

你所建议的基本上就是像 ExtJS 这样的 JavaScript 全栈框架所做的事情。您可以创建丰富的数据密集型应用程序,而无需编写任何 HTML —— 嗯,只需引用必要的 .js 库即可。布局、网格、表单等所需的复杂 DOM 都是由框架创建的。