node.js相比SpringMVC有啥优势

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js相比SpringMVC有啥优势相关的知识,希望对你有一定的参考价值。

参考技术A

优势:

    基于javascript是其最大优势。这给nodejs提供了大量的潜在用户。

    nodejs易学。如果懂web开发的大部分知识,只要跟着教程和使用合适的框架,可以很快开发出简单的web app。

    nodejs基于事件系统,面向web开发而开发。在io性能上有优势(其实是强制异步编程)。

    nodejs热度很高,社区(开源)非常活跃。(跟1相关但是不是直接关系)

    就是你说的,代码密度高。简短的代码可以完成开发任务。

    (源自4)各种库和框架多、新、质量好。连接数据库的库什么的。

本回答被提问者采纳

GZIP 与 DEFLATE 压缩相比有啥优势?

【中文标题】GZIP 与 DEFLATE 压缩相比有啥优势?【英文标题】:What is the advantage of GZIP vs DEFLATE compression?GZIP 与 DEFLATE 压缩相比有什么优势? 【发布时间】:2011-11-06 19:21:43 【问题描述】:

我有一个使用 asp.NET 4 (C#) 的网站。

我正在尝试找到一种方法来更好地优化我的网站的带宽。

我读过很多文章说 DEFLATE 比 GZIP 更快更小,因为 GZIP(基于 DEFLATE)添加了一些额外的数据。

检查 bing.com 和 google.com 的标头似乎它们都发送 GZIP 编码的数据。

假设我读到的是真的,我错过了 GZIP 在这种情况下的优势。所以我怀疑应该有充分的理由更喜欢 GZIP 而不是 DEFLATE。

我的问题:

我不知道 GZIP 是否比 DEFLATE 提供任何优势? 知道为什么主要搜索引擎使用 GZIP 吗?

这是我用来发送 DEFLATE 的代码(来自 Global.asax):

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    

        HttpApplication app = sender as HttpApplication;
        string acceptEncoding = app.Request.Headers["Accept-Encoding"];
        Stream prevUncompressedStream = app.Response.Filter;

        if (!(app.Context.CurrentHandler is Page ||
            app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
            app.Request["HTTP_X_MICROSOFTAJAX"] != null)
            return;

        if (acceptEncoding == null || acceptEncoding.Length == 0)
            return;

        acceptEncoding = acceptEncoding.ToLower();

        if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
        
            // defalte
            app.Response.Filter = new DeflateStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "deflate");
        
        else if (acceptEncoding.Contains("gzip"))
        
            // gzip
            app.Response.Filter = new GZipStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "gzip");
        
    

【问题讨论】:

见***.com/questions/388595/… 感谢 Paul 的修改。 所有答案都是错误的/不完整的,除了这个:***.com/a/9856879/632951 【参考方案1】:

Gzip 更可靠,因为它是 deflate 加上一些标头和校验和。换句话说,gzip 是放气的,还有额外的标头和校验和。 Deflate 使用 adler32 检查,它也是 gzip 的一部分。因为 gzip 有效载荷是 DEFLATE 压缩的有效载荷。

Deflate info

Gzip info

一个 gzip 文件/流包含:

- a 10-byte header, containing a magic number, a version number and a time stamp
- optional extra headers, such as the original file name,
- a body, containing a DEFLATE-compressed payload
- an 8-byte footer, containing a CRC-32 checksum and the length of the original uncompressed data

【讨论】:

总结一下..你的意思是GZIP更兼容浏览器吗? GZip 将使浏览器能够检查错误,但不会放气 @peer 这是错误的,deflate 会使用 adler32 检查错误。 @Pacerier 你是对的,DEFLATE 有效负载由校验和检查。【参考方案2】:

另一个答案大多是错误的。 Content-Encoding HTTP 标头的“deflate”值是用词不当,实际上是指 ZLIB。鉴于此,两者都有校验和和相同的压缩内容。它们仅在页眉/页脚和使用的校验和方面有所不同。

gzip "deflate" (zlib)
Header size 10 bytes 2 bytes
Footer size 4 bytes 0
Checksum CRC32 Adler-32
Compression algorithm DEFLATE DEFLATE
Specification RFC1952 RFC1950

从历史上看,“deflate”是有问题的,因为早期的 Microsoft IIS 服务器会发送原始的 deflate 数据而不是 zlib 数据(请参阅 https://***.com/a/9186091/1218408)。为了解决这个问题,通常只使用 gzip。

Deflate 稍微快一点,因为 Adler-32 的计算速度通常比 CRC32 快,但大部分时间都花在实际压缩数据而不是计算校验和上。

【讨论】:

你不是说 adler-32 比 crc32 稍微快一点吗? 我认为您将 DEFLATE 与 ZLIB 混淆了。 ZLIB 是 RFC1950,您的参考,并且大部分与您的描述相符。 DEFLATE 是 RFC1951。 @PhilP 我没有。我使用了“deflate”这个词,因为这是 HTTP 规范中 Content-Encoding 标头的错误命名值。没错,它实际上是 ZLIB,这就是我与 Microsoft IIS 服务器讨论的问题。我编辑了答案以强调这一点。

以上是关于node.js相比SpringMVC有啥优势的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.js 与 PHP 有啥优势 [重复]

与 ngResource 相比,使用 Restangular 有啥优势?

与 setState 回调相比,使用 componentDidUpdate 有啥优势?

与 Mongrel 集群相比,使用乘客有啥优势?

Java:FilterInputStream与其他流相比有啥优势和用途

Angular2 相比 Vue 有啥优势