Deno 1.26 发布,新增 Cache Web API、提升性能

来源: OSCHINA
编辑:
2022-10-01 07:36:00

Deno 1.26 已正式发布。

主要变化


CacheWeb API

此版本添加了对CacheAPI 的支持。该 API 可用于缓存 Request/Response 对象,对于动态生成 response 的场景十分有帮助。它允许缓存 GET 请求的 response,并从缓存中为类似请求提供 response。

下面是一个基于name查询生成 response 的示例:

import { serve } from "https://deno.land/std@0.158.0/http/server.ts";

// Open a cache named v1.
const CACHE = await caches.open("v1");

serve(async (req: Request) => {
  // Requests after first request are served from cache.
  const res = await CACHE.match(req);
  if (res) {
    res.headers.set("x-cache-hit", "true");
    return res;
  }

  const { searchParams } = new URL(req.url);
  const name = searchParams.get("name");
  const response = new Response(`Hello ${name}!`);
  // Put response in cache.
  await CACHE.put(req, response.clone());
  return response;
});

缓存被持久化到文件系统中,所以重启 Deno 不会刷新缓存。

目前实现的 API 包括:

WebCrypto Secure Curves

WebCrypto Secure Curves 规范添加了对 Curve25519 和 Curve448 的支持到 WebCrypto API。

Deno v1.26 实现了 CFRG curves Ed25519 和 X25519。

const key = await crypto.subtle.generateKey("X25519", true, ["deriveKey"]);

开发团队表示计划在未来的版本添加对 Ed448 和 X448 的支持。

提升性能

最近发布的几个版本都在持续优化性能。比如,在现有的 TypedArray 中进行文本编码,对于小的有效载荷,最大吞吐量提高了 5 倍;对于大的有效载荷,最大吞吐量提高了 30 倍。详情查看 denoland/deno#15922

写入小文件时,同步写入Deno.writeFileSync()的速度快了 1.44 倍,异步写入Deno.writeFile()的速度快了 1.15 倍。

CSV 解析的性能在 Mac 和 Linux 上都有明显提升:

URL 解析方面,对于没有查询字符串的 Url,URL 解析的速度提高了 2.27 倍,对于有多个查询字符串参数的复杂 Url,速度提高了 1.37 倍。详情查看 denoland/deno#15663

此版本对文件系统操作和console.log()也有不少改进:

最后,Deno.consoleSize与 v1.24.3 相比,TTY 方法的速度提升了 2.4 倍。详情查看 denoland/deno#15976

优化 module 下载 UI

添加了新的交互式"Download..."消息显示: 

完整更新内容查看发布公告

展开阅读全文
精彩评论
这是打了鸡血了,开始提升性能了,受bun刺激了
2022-10-01 10:31
1
举报
1 收藏
分享
1 评论
1 收藏
分享
返回顶部
顶部