我希望将压缩添加到我们基于 spring 的 web 服务(同时提供 xml 和 json),我看到有许多不同的 gzip 压缩过滤器,但不确定哪个被接受为最常见的,即是否有 Jboss 或 Spring提供?
此外,我已经读到压缩内容低于1000-860 字节是没有意义的,因为压缩时间大于节省的时间,如果它低于 150 字节,那么对象实际上会增长。
这些过滤器是否支持开箱即用的最小对象大小?
我希望将压缩添加到我们基于 spring 的 web 服务(同时提供 xml 和 json),我看到有许多不同的 gzip 压缩过滤器,但不确定哪个被接受为最常见的,即是否有 Jboss 或 Spring提供?
此外,我已经读到压缩内容低于1000-860 字节是没有意义的,因为压缩时间大于节省的时间,如果它低于 150 字节,那么对象实际上会增长。
这些过滤器是否支持开箱即用的最小对象大小?
这是一个旧线程,但过滤器中的压缩发生在呈现 JSP 之前。您可以通过 apache 启用它,但使用 Servlets/Filters 或 Spring MVC 将其作为过滤器可能对您没有帮助:
http://forum.springsource.org/showthread.php?45604-Using-gzip-for-compression-how
我注意到阅读您正在使用 xml 和 json 响应的问题。如果这就是您所寻找的,您可能仍然可以在 Spring MVC/Controller 级别从中获得一些好处,但我可能仍然会在 Apache 中追求 GZIP 功能。
http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/
您也可以使用 ehcache-web,因此 http 响应(带有标头)被缓存(带有 gzip 压缩)并返回给客户端。因此,gzip 过程(和序列化)仅在 spring mvc 端点返回内容时发生。
但是 ehcache-web 旨在缓存页面,因此当请求动词为 PUT 或 POST 或 DELETE 时,您必须覆盖过滤器(SimplePageCachingFilter)来处理驱逐。
您还可以编写自己的过滤器,并使用 ehcache 作为缓存管理器来放置/驱逐值。这些值将是包含 * 端点调用结果的结构,以 json 或 xml 序列化(作为字符串) * http 标头的映射。
不幸的是,Spring mvc (@Cacheable) 中的缓存支持缓存了方法调用的结果,然后为每个 http 请求序列化。这是可以理解的,因为 Spring 缓存是不可知的并且对 http 不严格。