这个问题涉及到Web应用程序。我在Web应用程序开发方面经验非常少,可能会忽略一些非常明显的点/问题。请指出它们。
据我了解,在大多数Web应用程序中,Web服务器将HTML通过网络发送到客户端(浏览器)。每次进行HTTP请求时都会发生这种情况。我觉得这非常浪费带宽。
1)由于浏览器可以运行JavaScript,为什么我们不只发送一个JavaScript程序,该程序可以生成网页的HTML内容(然后浏览器呈现)。
2)此外,浏览器可能会缓存JavaScript程序,下次服务器只需要发送数据。协议可能涉及浏览器发送其拥有的“程序版本”。
考虑一个相对简单的网站Hacker News [http://news.ycombinator.com]作为例子。让我们将数据(30篇帖子+它们的元数据)与其呈现分开。在假设1)的情况下,服务器可以发送数据(例如JSON)+一个生成HTML的JavaScript程序。这个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,那么为什么它首先要生成它,然后再通过网络发送它呢?
据我了解,在大多数Web应用程序中,Web服务器将HTML通过网络发送到客户端(浏览器)。每次进行HTTP请求时都会发生这种情况。我觉得这非常浪费带宽。
1)由于浏览器可以运行JavaScript,为什么我们不只发送一个JavaScript程序,该程序可以生成网页的HTML内容(然后浏览器呈现)。
2)此外,浏览器可能会缓存JavaScript程序,下次服务器只需要发送数据。协议可能涉及浏览器发送其拥有的“程序版本”。
考虑一个相对简单的网站Hacker News [http://news.ycombinator.com]作为例子。让我们将数据(30篇帖子+它们的元数据)与其呈现分开。在假设1)的情况下,服务器可以发送数据(例如JSON)+一个生成HTML的JavaScript程序。这个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,那么为什么它首先要生成它,然后再通过网络发送它呢?