当前位置: 首页 > news >正文

从化建网站开发高端市场

从化建网站,开发高端市场,自适应wordpress模板免费,西安seo交流响应压缩是 Web 应用一种常见的优化手段#xff0c;通过压缩算法减小传输数据的体积#xff0c;提高传输效率、节约带宽。客户端接收到数据后#xff0c;使用相同的算法对数据进行解压从而获取到原始数据。 客户端和服务器需要通过 Header 来协商双方支持的压缩算法。 Acc…响应压缩是 Web 应用一种常见的优化手段通过压缩算法减小传输数据的体积提高传输效率、节约带宽。客户端接收到数据后使用相同的算法对数据进行解压从而获取到原始数据。 客户端和服务器需要通过 Header 来协商双方支持的压缩算法。 Accept-Encoding请求头告诉服务器客户端支持的压缩算法多个使用逗号分割。例如Accept-Encoding: gzip, deflate。Content-Encoding响应头告诉客户端当前 Payload 使用的编码方式压缩算法。例如Content-Encoding: gzip。 常用的压缩算法如下 gzipdeflatebr JDK 提供了对 GZIP 压缩算法的实现GZIPOutputStream 和 GZIPInputStream我们可以用它们来实现 Gzip 压缩和解压缩。 一、使用 Gzip 压缩响应 在 Spring Boot 应用中创建一个 Controller使用 GZIPOutputStream 把一张图片文件20 KB压缩后响应给客户端。 package cn.springdoc.demo.web.controller;import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Optional; import java.util.zip.GZIPOutputStream;import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;RestController RequestMapping(/demo) public class DemoController {GetMappingpublic void file (HttpServletRequest request, HttpServletResponse response) throws IOException {// 20.0 KB 大小的图片文件Path file Paths.get(C:\\Users\\KevinBlandy\\Desktop\\springdoc-logo.png);// 设置文件类型response.setContentType(Optional.ofNullable(Files.probeContentType(file)).orElse(MediaType.APPLICATION_OCTET_STREAM_VALUE));// 设置压缩方式为 gzip 【关键点 1设置正确的 CONTENT_ENCODING 头】response.setHeader(HttpHeaders.CONTENT_ENCODING, gzip);// 包装 response 流为 gzip 流 【关键点 2使用 GZIPOutputStream 封装 response 流并写出数据】try(GZIPOutputStream gzipOutputStream new GZIPOutputStream(response.getOutputStream())){// 响应给客户端Files.copy(file, gzipOutputStream);}} }如上。关键点在于设置 CONTENT_ENCODING Header 为 gzip告诉浏览器使用了 gzip 压缩算法浏览器会自动使用相同算法进行解压缩。 最后使用 GZIPOutputStream 封装 response 流往 gzipOutputStream 中写入的数据就会被 gzip 压缩。 启动应用使用浏览器访问http://localhost:8080/demo 通过控制台的网络面板你可以看到 浏览器通过 Accept-Encoding 告诉服务器它支持 gzip 压缩算法。服务器正确地指定了 Payload 的编码类型为 gzip。由于使用了 Gzip 压缩数据的传输体积小于文件体积。 图片在浏览器中预览成功也说明服务器和客户端都进行了正确的编解码。 二、Spring Boot 配置响应压缩 对于这种如此常用的功能Spring Boot 早已提供了开箱即用的支持。 可以在 application.yaml / application.properties 文件中配置如下属性开启全局 Gzip 响应压缩 属性 说明 默认值 server.compression.enabled 是否开启全局响应压缩 false server.compression.excluded-user-agents 以逗号分隔的 User Agent 列表对这些 User Agent 的响应不会被压缩。 server.compression.mime-types 逗号分割的文件 MIME Type媒体类型这些类型的文件才会被压缩。 [text/html, text/xml, text/plain, text/css, text/javascript, application/javascript, application/json, application/xml] server.compression.min-response-size 进行压缩的最低 Content-Length 值。 2KB 在 application.yaml 中添加如下配置 server:compression:# 开启响应压缩enabled: truemime-types: - image/png # 压缩 png 图片# 进行压缩的最小体积min-response-size: 1KB其实只需要设置 server.compression.enabledtrue 即可这里故意设置 server.compression.min-response-size1KB 完全是为了进行演示因为示例图片不足 2KB。 server.compression.min-response-size 值不应该过小否则压缩后的数据体积可能比原始数据还大。 还需要覆盖 server.compression.mime-types 配置因为默认配置的压缩的文件类型列表中不包含图片。 修改 Controller如下 GetMapping public ResponseEntityResource file (HttpServletRequest request, HttpServletResponse response) throws IOException {// 20.0 KB 大小的图片文件Path file Paths.get(C:\\Users\\KevinBlandy\\Desktop\\springdoc-logo.png);return ResponseEntity.ok().contentType(MediaType.IMAGE_PNG) // 正确设置图片的 Content Type浏览器才会预览图片.body(new InputStreamResource(Files.newInputStream(file))); }这次不自己使用 GZIPOutputStream 进行压缩响应而是直接返回 ResponseEntityResource 对象。这也是关键点如果你想基于配置的全局 Gzip 响应压缩生效则不能自己使用 HttpServletResponse 进行数据响应必须要通过返回对象由 DispatcherServlet 处理全局响应压缩才会生效。 重启应用用浏览器再次请求 http://localhost:8080/demo你会发现结果跟上节中的测试结果一样。全局 Gzip 压缩配置生效。
http://www.yutouwan.com/news/178658/

相关文章:

  • 做的好的商城网站设计网站建站行业新闻
  • 中国黑色网站模板天津的网站建设公司
  • 四川省住房和城乡建设厅网站不见了宝安公司网站建设比较好的
  • 深圳做棋牌网站建设哪家服务好网站被人抄袭怎么办
  • 郑州网站建设与设计网址大全2345色综合导航
  • 平面设计网站中文中小学校园网站开发技术
  • 国内美食网站欣赏做网站卖什么软件
  • o2o网站开发价格抚州公司做网站
  • 外贸电子网站建设注册电气工程师考试科目
  • 河南省建设监理协会官网站wordpress还是自己写
  • 西安门户网站建设高端网站定制
  • 中山网站专业制作家里电脑如何做网站
  • 衡阳网站开发有哪些公司成立公司股权怎么分配
  • 手机商城网站模板免费打开网站
  • 教研网站建设方案500强网站建设
  • 做公司网站用哪个空间好短网址生成管理平台
  • 欧美网站模板山东省建设八大员考试网站
  • 商丘柘城做网站网站建设与发布
  • 30秒网站成都私人定制旅游公司排名
  • 曲阳做网站打不开wordpress站点
  • 点击立即进入正能量网站重庆公司网站设计制作
  • 公司的网站设计制作个人姓名最多备案多少个网站
  • 萧山中兴建设有限公司网站商城网页设计
  • 遵义网站seowordpress商业主体
  • 新开传奇网站曾劲松柳州住房城乡建设厅官方网站
  • 国外 网站 欣赏女室内设计师的出路
  • 郑州网站空间石家庄新闻发布会最新消息
  • 什么网站可以做软件有哪些内容吗wordpress 零售电商
  • 学校网站模板 中文网站制作公司 重庆
  • 如何做学校网站app怎么做网站不会被屏蔽