npm 包 @aws-sdk/chunked-blob-reader 使用教程

阅读时长 7 分钟读完

简介

@aws-sdk/chunked-blob-reader 是一个 npm 包,它为在浏览器上读取 AWS S3 对象提供了一种流式、分块、内存友好的方法。本文将介绍如何使用 @aws-sdk/chunked-blob-reader 包,包括安装和使用。

安装

使用 NPM 安装 @aws-sdk/chunked-blob-reader

使用

在前端页面引入

-- -------------------- ---- -------
------- --------------
------ - -------- - ---- ---------------------
------ - ----------------- - ---- -------------------------------

----- -------- ----------------------- -
  ----- -- - --- -----------
  ----- -------- - ----- --------------
    ------- ------------
    ---- ----------
  ---

  ------ --- ---------------------------------
-

----- --------- - ----------------
----- ------ - ----- ------------------------
--- ----- ------ ----- -- ------- -
  -- ----- -----
-
---------

在 NodeJS 上使用

-- -------------------- ---- -------
------ - -------- - ---- ---------------------
------ - ----------------- - ---- -------------------------------
------ - -------- - ---- ---------

----- ------------- - --------------------------

----- -- - --- -----------
----- --------- - ----------------
----- -------- - ----- -------------- ------- ------------ ---- --------- ---

----- ------ - --- ---------------------------------

----- -------- - --- ------------------------------------
  ------------ --- - -----
  ---------------- -- - -----
---

--- ----- ------ ----- -- ------- -
  ----------------------
-

--------------- -- -
  ----------------- ---------- ----------------
---

深入理解

@aws-sdk/chunked-blob-reader 为 AWS S3 的对象读取提供了一种 chunked-reading 的方式。它的设计目的是为分块的数据提供一种快速、流式、内存优化的读取方式,同时保留较低的读写负载和 CPU 开销。

当使用流的方式读取一个文件时,我们通常会将它分割成一个个的 chunks 交替进行写入和读出操作。在单个请求返回的大型数据中,可以通信少量的 chunk 来获取数据,然后按需自助加载内存,从而避免内存泄漏和内存超限的风险。

🔍 分块是意味着什么?

许多 AWS S3 对象是巨大的,它们无法一次加载到内存中。这意味着必须将数据拆分成较小部分,以便在不超过系统内存限制的情况下进行处理。将对象分成 chunks 并按 demand 加载它们可以解决这个问题。

@aws-sdk/chunked-blob-reader 充分利用了分块技术,将分块效果最大化。它只会下载有需要的 chunks,且仅下载一次,直到我们需要的 chunk 被下载为止。这种模式在处理大型文件时特别有用,因为可以降低对服务器和客户机的压力,使读取文件的方式更加有效率。

🔍 Chunk 是带有什么信息的?

  • Limit:chunk 的最大大小
  • ReadableStream:chunk 的内容流
  • Headers:该 chunk 的元数据

函数

示例代码

读取 S3 对象

-- -------------------- ---- -------
------ - -------- - ---- ---------------------
------ - ----------------- - ---- -------------------------------

----- -------- ----------------------- -
  ----- -- - --- -----------
  ----- -------- - ----- --------------
    ------- ------------
    ---- ----------
  ---

  ------ --- ---------------------------------
-

----- --------- - ----------------
----- ------ - ----- ------------------------
--- ----- ------ ----- -- ------- -
  -- ----- -----
-

从 S3 下载文件

-- -------------------- ---- -------
------ - -------- - ---- ---------------------
------ - ----------------- - ---- -------------------------------
------ - -------- - ---- ---------

----- ------------- - --------------------------

----- -- - --- -----------
----- --------- - ----------------
----- -------- - ----- -------------- ------- ------------ ---- --------- ---

----- ------ - --- ---------------------------------

----- -------- - --- ------------------------------------
  ------------ --- - -----
  ---------------- -- - -----
---

--- ----- ------ ----- -- ------- -
  ----------------------
-

--------------- -- -
  ----------------- ---------- ----------------
---

总结

在本文中,我们介绍了 npm 包 @aws-sdk/chunked-blob-reader 的使用教程,并深入讲解了该包的背后设计理念、chunk 单位概念,以及如何在浏览器和 NodeJS 上使用这个包。通过对本文的学习,读者可以了解到如何正确地读取 AWS S3 对象,并避免内存泄漏和内存超限的风险。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f6f3edaa9b7065299ccba5d

纠错
反馈