首页 > 系统相关 >短视频源码实现流式传输,降低处理大文件时对内存的占用

短视频源码实现流式传输,降低处理大文件时对内存的占用

时间:2024-02-03 09:33:18浏览次数:26  
标签:文件 Encoding 流式 Content 源码 内存

短视频源码实现流式传输,降低处理大文件时对内存的占用
其实当使用 Node.js 向短视频源码客户端返回大文件时,我们最好使用流的形式来返回文件流,这样能避免处理大文件时,占用过多的内存。具体实现方式如下所示:

const fs = require("fs");
const zlib = require("zlib");
const http = require("http");

http
  .createServer((req, res) => {
    res.writeHead(200, {
      "Content-Type": "text/plain;charset=utf-8",
      "Content-Encoding": "gzip",
    });
    fs.createReadStream(__dirname + "/big-file.txt")
      .setEncoding("utf-8")
      .pipe(zlib.createGzip())
      .pipe(res);
  })
  .listen(3000, () => {
    console.log("app starting at port 3000");
  });

 

当使用流的形式来返回文件数据时,HTTP 响应头 Transfer-Encoding 字段的值为 chunked,表示数据以一系列分块的形式进行发送。

Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/plain;charset=utf-8
Date: Sun, 06 Jun 2021 01:02:09 GMT
Transfer-Encoding: chunked

 

以上就是短视频源码实现流式传输,降低处理大文件时对内存的占用, 更多内容欢迎关注之后的文章

 

标签:文件,Encoding,流式,Content,源码,内存
From: https://www.cnblogs.com/yunbaomengnan/p/18004354

相关文章

  • 短视频源码,实现预处理防止客户端频繁请求
    Go语言实现在Go语言中,使用db.Prepare()方法实现预处理:func(db*DB)Prepare(querystring)(*Stmt,error)Prepare执行预处理SQL语句,并返回Stmt结构体指针,进行数据绑定操作。查询操作使用db.Prepare()方法声明预处理SQL,使用stmt.Query()将数据替换占位......
  • [Flink] Flink源码分析 : BoundedOutOfOrdernessTimestampExtractor
    0序言0.1缘起importorg.apache.flink.api.common.functions.MapFunction;importorg.apache.flink.api.java.tuple.Tuple;importorg.apache.flink.api.java.tuple.Tuple3;importorg.apache.flink.configuration.Configuration;importorg.apache.flink.configuration.......
  • Pytest 源码解读 [7] - PyTest on pluggy
    之前花了很多篇幅来介绍 pluggy 这个插件框架。核心原因就是因为其实 pytest 是一个完全基于 pluggy 开发的测试框架,这个也可以解释为什么说 pytest 是一个很灵活的测试框架,支持很多插件(https://docs.pytest.org/en/7.0.x/reference/plugin_list.html)。 其实原因就......
  • 在ubuntu16.04下,源码编译安装特定版本的MongoDB PHP扩展
    背景:我的php项目在连接其他mongo库时报:Serveratxxx:27017reportswireversion5,butthisversionoflibmongocrequiresatleast6(MongoDB3.6)原因:本地MongoDBPHP扩展的版本过高解决方法:降低本地PHP扩展MongoDB版本,现在要降到mongodb-1.12.0版本步骤:1:下载......
  • 深入浅出Java多线程(六):Java内存模型
    引言大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第六篇内容:Java内存模型。大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!!在并发编程中,有两个关键问题至关重要,它们是线程间通信机制和线程间同步控制。线程间通信机制线程间通信是指在一个多线程程序......
  • 【设计模式】原型模式——JDK源码中的原型模式
    原型模式在JDK源码中有广泛的应用,想找原型模式的实现也比较容易,只要找Cloneable接口的子类即可。因为JDK源码中Cloneable的子类太多,本文只讨论最典型的几种。ArrayList首先看ArrayList和原型模式有关的代码:publicclassArrayList<E>extendsAbstractList<E>implementsL......
  • java面向对象基础语法之两个引用指向同一个对象内存
    一:概述前面已经说了单个对象的引用指向和两个对象的引用指向。下面来说一下两个对象引用指向同一个对象的内存图。二:具体说明<1>说明的具体代码实例代码publicclassStudent1{Stringname;intage;publicvoidstudy(){System.......
  • 高德司机端趣接单抢单辅助器源码分享下载 -24软件网
    在网约车行业中,司机端抢单是一项关键的操作,直接关系到司机的订单量和收入。有一些开发者或者个体经营者可能尝试通过编写抢单源码辅助器来提高抢单的效率。然而,这样的做法可能会违反平台规定,涉及到技术伦理和法律风险。本文将介绍司机端抢单源码辅助器的技术实现方式,以及可能面临......
  • 面向对象内存图
    一个对象内存图两个对象内存图不用加载,直接用两个引用指向同一对象......
  • 搭建高效企业培训平台:教育系统源码开发详解
    为了更好地满足企业培训的需求,许多组织纷纷转向数字化教育,搭建高效的企业培训平台成为当务之急。本篇文章,小编将为您讲解教育系统源码的开发细节,为搭建一个功能强大、灵活高效的企业培训平台提供详尽的指南。 一、教育系统的基础架构1.1数据库设计众所周知,数据库设计是整个平台的......