<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>后端 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《200毫秒：一次HTTP请求的完整旅程》</title><link>https://channel.meo-ai.com/posts/677</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/677</guid><pubDate>Sat, 18 Jul 2026 15:24:57 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《200毫秒：一次HTTP请求的完整旅程》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23NodeJS&quot; title=&quot;#NodeJS&quot;&gt;#NodeJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE&quot; title=&quot;#网络协议&quot;&gt;#网络协议&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TCP&quot; title=&quot;#TCP&quot;&gt;#TCP&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TLS&quot; title=&quot;#TLS&quot;&gt;#TLS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23DNS&quot; title=&quot;#DNS&quot;&gt;#DNS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23HTTP&quot; title=&quot;#HTTP&quot;&gt;#HTTP&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Postgres&quot; title=&quot;#Postgres&quot;&gt;#Postgres&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Linux%E5%86%85%E6%A0%B8&quot; title=&quot;#Linux内核&quot;&gt;#Linux内核&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E6%80%A7%E8%83%BD&quot; title=&quot;#Web性能&quot;&gt;#Web性能&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;这是一个交互式可视化网站，以旧金山咖啡店一次点击购买为起点，逐帧追踪HTTP请求在211.4毫秒内穿越北美大陆的完整生命周期。从触摸板电容变化到屏幕像素刷新，文章以精确的时间轴拆解了硬件中断、浏览器事件循环、DNS解析、TCP/TLS握手、内核网络栈、Node.js事件循环、Postgres事务提交、光纤传输、Wi-Fi重传、GPU渲染等每个环节，揭示了&quot;冷启动&quot;请求中60%时间消耗在握手、35%在传输、而服务器实际计算仅占1.4%的惊人事实。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. 一次点击触发7层软件栈（触摸板→HID→窗口服务器→Chrome→渲染器→JavaScript→fetch）才发出第一个字节，而电容变化到网络请求离开仅需5毫秒&lt;br /&gt;2. DNS查询通过UDP在2毫秒内完成，依赖Anycast路由将请求导向最近的解析器；TLS 1.3将握手从2个RTT压缩到1个，但仍需127毫秒建立加密隧道&lt;br /&gt;3. 4,700公里光纤需6次穿越大陆，每次31毫秒；Wi-Fi碰撞重传仅需1.2毫秒，却足以容纳整个Postgres查询往返（0.35毫秒）&lt;br /&gt;4. 服务器端50微秒内完成从网卡DMA→NAPI轮询→TCP重组→epoll唤醒→Node.js读取→TLS解密→HTTP解析→路由到handler的全流程&lt;br /&gt;5. Postgres通过连接池、预编译语句和WAL组提交将INSERT优化至2.1毫秒，fsync强制刷盘是唯一的同步阻塞点&lt;br /&gt;6. 响应返回后，Chrome还需经历kqueue唤醒、TLS解密、React重渲染、样式计算、布局、绘制、合成，最终等待4.4毫秒VSync才显示&quot;Order confirmed&quot;&lt;br /&gt;7. 第二次&quot;热请求&quot;可复用TCP连接和TLS会话票证，将耗时从211毫秒降至约95毫秒，节省的116毫秒全是首次建立的连接成本&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://200ms.thenodebook.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://200ms.thenodebook.com/&quot;&gt;https://200ms.thenodebook.com/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://200ms.thenodebook.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;A single HTTP request, traced in real time through DNS, TCP, TLS, the kernel, Node&apos;s event loop, and Postgres — then back to the pixel. Scroll distance equals time.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;The Nodebook&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;200 Milliseconds — the complete life of one HTTP request, visualized&quot; src=&quot;/static/https://cdn4.telesco.pe/file/t14I1JhXbyzPs7gW4Yn8zJrTsax5z-Qb3M9gn0ONO53sIhEFWNIdP7_FhiW_o9ERCu-nSn5dK1SLk_9hkMfrB9pv93oWF6rcqg4vWWyrZ-HqQ3QZLy9hSlzkaqJxBenvOvKXT3Ew3A8HJnaEG7XJDmFA6OMVe5KIeM9Xw0nQNXUyRqCkYsGcmEopxeUxp6vBfTOe-9vyA9HG1JaewSc0SD7AsIHV9gpUaBjXqHvPTxfe457Yh3t_UK7DFhn9O9rZwEc8u3MMzQsQOBHZNMEdH0bAF8QztT4BkTRcLD8x-YzCWrTadmhslK12wNVgsmPJ_HQ3RceRazGqAGbaYdT-7w.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;200 Milliseconds — the complete life of one HTTP request, visualized&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;A single HTTP request, traced in real time through DNS, TCP, TLS, the kernel, Node&apos;s event loop, and Postgres — then back to the pixel. Scroll distance equals time.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《永不浪费一个Token：AI推理流的可恢复性设计》</title><link>https://channel.meo-ai.com/posts/663</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/663</guid><pubDate>Wed, 17 Jun 2026 01:11:36 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《永不浪费一个Token：AI推理流的可恢复性设计》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI%E6%8E%A8%E7%90%86&quot; title=&quot;#AI推理&quot;&gt;#AI推理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Cloudflare&quot; title=&quot;#Cloudflare&quot;&gt;#Cloudflare&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23DurableObject&quot; title=&quot;#DurableObject&quot;&gt;#DurableObject&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%B5%81%E5%BC%8F%E6%81%A2%E5%A4%8D&quot; title=&quot;#流式恢复&quot;&gt;#流式恢复&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Token%E8%AE%A1%E8%B4%B9%E4%BC%98%E5%8C%96&quot; title=&quot;#Token计费优化&quot;&gt;#Token计费优化&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;本文探讨了AI Agent在推理过程中因进程崩溃或重新部署导致流式连接中断、已付费Token被重复计费的痛点。核心方案是在Agent与LLM提供商之间引入一个持久化缓冲区（Durable Object），将流式数据实时写入SQLite，使连接与Agent进程解耦。Agent重启后可通过游标恢复，避免重复调用和重复付费。该机制同时解决了浏览器断网重连和进程崩溃恢复两种场景，且即将集成到Cloudflare AI Gateway中，实现一键开启的持久化推理。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 隐藏的成本黑洞：Agent进程崩溃或重新部署时，正在进行的LLM流式请求会中断，已付费的生成Token全部丢失，恢复后必须重新调用并重新付费，且旗舰模型（如GPT-5.5）的重复成本是小模型的15倍。&lt;br /&gt;2. 解耦连接与进程：将LLM提供商连接移出Agent进程，部署为独立的持久化缓冲区（Durable Object），在后台持续将流式数据写入SQLite。即使Agent进程被替换，缓冲区仍继续接收数据，Token不再浪费。&lt;br /&gt;3. 一份日志，两种用途：持久化缓冲区存储的原始字节流既支持浏览器断网重连（追赶实时游标），也支持进程崩溃恢复（回放已存储的片段）。两者共用同一套SQLite日志机制，仅需判断生产者是否仍在运行。&lt;br /&gt;4. 零自定义解析：存储原始字节而非解析后的SSE事件，恢复时通过各提供商的官方插件（如OpenAI、Anthropic）重新解析，避免维护多套格式解析器，且能自动适配格式变更。&lt;br /&gt;5. 行业现状对比：OpenAI Responses API已原生支持后台模式恢复；Anthropic和Google Gemini均不支持服务端续流，只能重新提示并重复计费；Vercel的&lt;code&gt;resumable-stream&lt;/code&gt;为应用层方案，无法承受部署替换。&lt;br /&gt;6. 即将落地AI Gateway：Cloudflare AI Gateway正在集成该持久化恢复能力，未来只需在Agent基类中设置&lt;code&gt;durableBuffer = true&lt;/code&gt;即可一键开启，实现跨提供商的Token零浪费。&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://sunilpai.dev/posts/never-waste-a-token/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://sunilpai.dev/posts/never-waste-a-token/&quot;&gt;https://sunilpai.dev/posts/never-waste-a-token/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://sunilpai.dev/posts/never-waste-a-token&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;durable inference: resumable streams, crash recovery, and why the LLM request shouldn&apos;t die with your process.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Solving the decision problem&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;never waste a token&quot; src=&quot;/static/https://cdn4.telesco.pe/file/uHdH2ydGrBpImS6yyNDlEDCpezqDJHVi4VJ787KA-5JzVHqpKDz2skyD1IkcJl-JWsJXS_cL7Zz5eZcup8qUKZL5AS2eud86C9zlfexF4zE4pKORoLpxrwFniNgkRm274h_6ALna2B8dBYm-1UZzlEERSxMj7-Vd46jSd_hDv5FwfMuCiylul6PiW4JVwmI3P_nxlaQ7ODor-w0loTOvNlHj9lAIcyLwJsYhEFnVijYrzoQTy0roEE84c0H55IEsXmrIjMY9i9ps8ghJj-Vcdfb4328m17gE6qUmsj-az1_ilYzSwhf-_OGEe9v4NMe7dbWgUQZ5Kfe-nlj1dw9LuA.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;never waste a token&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;durable inference: resumable streams, crash recovery, and why the LLM request shouldn&apos;t die with your process.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《Node.js流内存泄漏生产级排查手册：五大隐蔽陷阱与五则铁律》</title><link>https://channel.meo-ai.com/posts/653</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/653</guid><pubDate>Sun, 31 May 2026 14:26:16 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Node.js流内存泄漏生产级排查手册：五大隐蔽陷阱与五则铁律》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23NodeJS&quot; title=&quot;#NodeJS&quot;&gt;#NodeJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%B5%81%E5%A4%84%E7%90%86&quot; title=&quot;#流处理&quot;&gt;#流处理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%86%85%E5%AD%98%E4%BC%98%E5%8C%96&quot; title=&quot;#内存优化&quot;&gt;#内存优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98&quot; title=&quot;#性能调优&quot;&gt;#性能调优&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 五大隐蔽泄漏模式：①客户端断开但服务端未感知（legacy pipe() 不处理 premature close）②手动事件解绑是噩梦（async iterator 的 break 自动触发 destroy）③超时只杀响应不杀上游（AbortSignal.timeout 才能全链路终止）④数据库生命周期绑定网络速度（应解耦上游资源与下游传输）⑤pipeline() 异步 destroy 的竞态窗口（catch 里手动补刀 source.destroy）&lt;br /&gt;2. 五则生产铁律：Rule 1 永远用 pipeline() 替代 .pipe()，自动处理错误/完成/背压传播；Rule 2 尊重 .write() 的布尔返回值，并掌握防&quot;Drain Hang&quot;的 AbortController 竞速清理写法；Rule 3 谁创建谁销毁，try/finally + AbortSignal 是标配；Rule 4 用 --max-old-space-size=128 做本地压测，看 writableLength 是否脱离 highWaterMark 失控飙升；Rule 5 写单元测试验证背压，用低 highWaterMark 的慢消费者 mock 检测队列是否暴涨&lt;br /&gt;3. 未来方向：Node.js 正推动&quot;stream-less future&quot;，用纯 async generator + pipeline() 替代 legacy Stream API，从 push 模式转为 pull 模式，背压协作变成结构性而非手动检查；Node.js 22 的 stream.compose() 可将多个 generator/流封装为可复用的 Duplex 单元&lt;br /&gt;4. 核心洞察：Node.js 流基于信任系统，破坏信任时不会大声报错，而是静默累积直到崩溃。四行修复代码（检查 write 返回值 + await drain）只是起点，真正的挑战在于理解生产环境中连接断开、超时、慢网络等边界情况&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://frontendmasters.com/blog/the-production-playbook-for-node-js-stream-leaks/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://frontendmasters.com/blog/the-production-playbook-for-node-js-stream-leaks/&quot;&gt;https://frontendmasters.com/blog/the-production-playbook-for-node-js-stream-leaks/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://frontendmasters.com/blog/the-production-playbook-for-node-js-stream-leaks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;This is Part 2 of a two-part series. Part 1 covered the core mental model of backpressure, why highWaterMarkisn’t a safety net, the .pipe()to pipeline() migration, and why async/awaitdoesn’t solve data volume problems. We also fixed the immediate crisis:…&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Frontend Masters&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;The Production Playbook for Node.js Stream Leaks&quot; src=&quot;/static/https://cdn4.telesco.pe/file/MHq7Fj5lgHoyVhtMtp8D2IAryNoFLf4FUJO-M6hwQRKWqdU6yEmHBFMQ4e9uyBV_sf9MMawdxvLUKNlKu-TpP831ksZpPlfFXxpPLpUsL2LFnjWZq7kVLuHqKhZzCEkKjmmo5puFtzHlMPbJPbMNeISm3UhmXTy-jUNun6btyy2QCBPNn4g-7zz_sp1s27vBJKlCHOIT1119yvg5kKQ7GS6hlealhyt9jiUxpizJ7oZj58U-u0yXh0coj98VdLWYzpjgd2jZ_I3AyVCIQrZNBKvmTjNcYEWuBTd2wG5ffvXFj9jozm5AA5E6vurRrr-RyzeWA_8xXEgGiboYsUkkMA.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;The Production Playbook for Node.js Stream Leaks&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;This is Part 2 of a two-part series. Part 1 covered the core mental model of backpressure, why highWaterMarkisn’t a safety net, the .pipe()to pipeline() migration, and why async/awaitdoesn’t solve data volume problems. We also fixed the immediate crisis:…&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《Node.js官方发布Axios迁移Fetch指南》</title><link>https://channel.meo-ai.com/posts/640</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/640</guid><pubDate>Fri, 22 May 2026 10:24:20 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Node.js官方发布Axios迁移Fetch指南》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23NodeJS&quot; title=&quot;#NodeJS&quot;&gt;#NodeJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23FetchAPI&quot; title=&quot;#FetchAPI&quot;&gt;#FetchAPI&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Axios&quot; title=&quot;#Axios&quot;&gt;#Axios&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%A0%81%E8%BF%81%E7%A7%BB&quot; title=&quot;#代码迁移&quot;&gt;#代码迁移&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23HTTP%E8%AF%B7%E6%B1%82&quot; title=&quot;#HTTP请求&quot;&gt;#HTTP请求&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;Node.js官方博客发布了一个将Axios代码自动迁移到原生WHATWG Fetch API的codemod工具，详细说明了迁移理由、Node.js版本要求、支持的转换方法及具体代码示例，同时坦诚标注了暂不支持的高级特性。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 迁移四大理由：Fetch是Node.js原生内置，无需额外依赖；性能针对现代运行时做了优化；严格遵循Web标准，浏览器和Node.js代码可复用；移除第三方库减少安全风险&lt;br /&gt;2. 版本门槛：Node.js v18起Fetch可用但为实验性，v21起才稳定；如果包还兼容v18以下，迁移必须升主版本号并修改package.json的engines字段&lt;br /&gt;3. 支持的转换方法覆盖很全，包括get、post、put、patch、delete、head、options、request以及postForm/putForm/patchForm等表单提交方式&lt;br /&gt;4. 转换后的Fetch代码会用&lt;code&gt;Object.assign(res, { data: await res.json() })&lt;/code&gt;来模拟Axios的&lt;code&gt;response.data&lt;/code&gt;结构，让迁移后的代码改动最小化&lt;br /&gt;5. 目前暂不支持拦截器、取消令牌和&lt;code&gt;axios.create()&lt;/code&gt;实例配置等高级特性，这些场景需要手动处理&lt;br /&gt;6. 官方对Axios维护者表达了感谢，认可其对生态的贡献&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://nodejs.org/en/blog/migrations/axios-to-fetch&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://nodejs.org/en/blog/migrations/axios-to-fetch&quot;&gt;https://nodejs.org/en/blog/migrations/axios-to-fetch&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://nodejs.org/en/blog/migrations/axios-to-fetch&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.&quot;&gt;
  &lt;i class=&quot;link_preview_right_image&quot; style=&quot;background-image:url(&apos;https://cdn4.telesco.pe/file/ej4bjz94abCNm6Z7pgT3GobaAe9h2LJm8ruR90FMRPeDllVqIXw5gGim3Fc0MThsmjooNygiTaow8YTMjOtc9bJx3hgP4qySOpjVqdrrPjgViylh0__axb4VR2v8YmJU1Kr9xujmBzeDQPOvPvOXyfnXcKQKXcO76nHt2Xmy8rZxT5LnYK_GmDR4_svaziYKtU3D94FNcvan-nt3Ov12uF5FPyEsuH4ZBZddlobQkmiydyc7pkDCGRxS-mSnoXtsAUZggk4_8y0RW7l_rxjAkEIzC_wZFX-Pglg-6M1H_0oesby_f9m9Gb_HagcrzJvB32hd_bD1gGTSunA94NEMJg.jpg&apos;)&quot;&gt;&lt;/i&gt;
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;nodejs.org&lt;/div&gt;
  
  &lt;div class=&quot;link_preview_title&quot;&gt;Node.js — Axios to WHATWG Fetch&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Node.js&lt;i class=&quot;emoji&quot; style=&quot;background-image:url(&apos;//telegram.org/img/emoji/40/C2AE.png&apos;)&quot;&gt;&lt;b&gt;®&lt;/b&gt;&lt;/i&gt; is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《Express全新面貌》</title><link>https://channel.meo-ai.com/posts/638</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/638</guid><pubDate>Fri, 22 May 2026 10:19:28 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Express全新面貌》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23NodeJS&quot; title=&quot;#NodeJS&quot;&gt;#NodeJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ExpressJS&quot; title=&quot;#ExpressJS&quot;&gt;#ExpressJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Web%E6%A1%86%E6%9E%B6&quot; title=&quot;#Web框架&quot;&gt;#Web框架&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%96%87%E6%A1%A3%E9%87%8D%E6%9E%84&quot; title=&quot;#文档重构&quot;&gt;#文档重构&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%BC%80%E6%BA%90%E7%A4%BE%E5%8C%BA&quot; title=&quot;#开源社区&quot;&gt;#开源社区&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;Express官方博客宣布完成网站全面重构与品牌焕新，涵盖Astro技术栈迁移、AI智能搜索、版本化文档及全新Logo设计，标志着这个Node.js生态老牌框架在2024年重启后进入新阶段。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 网站底层从Jekyll迁移到Astro，带来更灵活的组件模型、国际化支持和内容页性能提升，文档生成与维护方式也一并升级&lt;br /&gt;2. 文档新增多版本并行浏览，Express 4和5的文档可以独立查看，告别版本混淆的烦恼&lt;br /&gt;3. 搜索接入了Orama的AI能力，支持自然语言提问，找API和概念更快更准&lt;br /&gt;4. 全站文档开放了&lt;code&gt;llms.txt&lt;/code&gt;端点，方便大模型和AI助手直接读取最新文档&lt;br /&gt;5. 接下来的重点是补齐内容缺口、完善多语言翻译，并让文档和新版本同步发布&lt;br /&gt;6. 新Logo由社区公开协作设计，品牌定位为&quot;Established·Dependable·Approachable&quot;，延续极简风格的同时开启新篇章&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://expressjs.com/en/blog/2026-05-18-a-new-look-for-express/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://expressjs.com/en/blog/2026-05-18-a-new-look-for-express/&quot;&gt;https://expressjs.com/en/blog/2026-05-18-a-new-look-for-express/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://expressjs.com/en/blog/2026-05-18-a-new-look-for-express&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Discover the redesigned Express.js website and our brand-new logo, built from the ground up with Astro.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Express.js&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;A New Look for Express · Express.js&quot; src=&quot;/static/https://cdn4.telesco.pe/file/wA2caV0UkMmeoh17rgLVtNzvyWKWs1ADySiANFvKMtX7ZjtizXJfc3N3ubErisnP0Q7WJz8Ojg4VA9KkMr3kmZ61N2zKVCDsvF5LaiWlEwtjgrLyeVFUCsR5Qmwy8GKgotri1m0XfksU5n6u1Z5suVQpqRG4JjJxq23hcAagl8KjogAisdPdu2Z4izIU2tQ14SI-CgxZrG3WSB9llO4cdZZpYqjj61QO_SsR9wVK0ZxYTRGhOeLE5spJXn6UntHL1oELl91xEUzTV7GXqlXV3wS3H_lEekLvx0-8ytmOSDfvhCNEPMHus2Bzz1_Jan-Pu8A8IcxBXvlxFXhVfJuiTQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;A New Look for Express · Express.js&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Discover the redesigned Express.js website and our brand-new logo, built from the ground up with Astro.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《Obscura：专为AI代理和爬虫打造的轻量级无头浏览器》</title><link>https://channel.meo-ai.com/posts/625</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/625</guid><pubDate>Thu, 07 May 2026 02:07:37 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Obscura：专为AI代理和爬虫打造的轻量级无头浏览器》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Rust&quot; title=&quot;#Rust&quot;&gt;#Rust&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23HeadlessBrowser&quot; title=&quot;#HeadlessBrowser&quot;&gt;#HeadlessBrowser&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23WebScraping&quot; title=&quot;#WebScraping&quot;&gt;#WebScraping&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI_Agent&quot; title=&quot;#AI_Agent&quot;&gt;#AI_Agent&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Chrome_DevTools_Protocol&quot; title=&quot;#Chrome_DevTools_Protocol&quot;&gt;#Chrome_DevTools_Protocol&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Puppeteer&quot; title=&quot;#Puppeteer&quot;&gt;#Puppeteer&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Playwright&quot; title=&quot;#Playwright&quot;&gt;#Playwright&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Anti_Detection&quot; title=&quot;#Anti_Detection&quot;&gt;#Anti_Detection&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;Obscura是一款基于Rust编写的开源无头浏览器引擎，专为大规模网页抓取和AI自动化场景设计。它通过内置V8引擎运行真实JavaScript，完整支持Chrome DevTools Protocol，可直接替代Puppeteer和Playwright依赖的Headless Chrome，在内存占用（30MB vs 200MB+）、启动速度和反检测能力上具有显著优势。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;- **极致轻量，资源友好**：相比Headless Chrome动辄200MB+的内存占用和300MB+的体积，Obscura仅需30MB内存和70MB二进制文件，启动几乎瞬时完成，页面加载速度提升约6倍&lt;br /&gt;- **零依赖，开箱即用**：无需安装Chrome或Node.js，单个二进制文件即可运行，支持Linux、macOS（Intel/Apple Silicon）和Windows平台&lt;br /&gt;- **无缝兼容现有生态**：完整实现Chrome DevTools Protocol，可作为Puppeteer和Playwright的底层浏览器直接连接使用，现有爬虫脚本迁移成本低&lt;br /&gt;- **内置隐身模式**：自带反指纹追踪（随机化GPU、屏幕、Canvas等参数）和3520个域名级别的追踪器拦截，无需额外配置即可绕过常见反爬机制&lt;br /&gt;- **并行爬取能力**：提供`obscura scrape`命令支持多URL并发抓取，配合`--concurrency`参数可灵活控制worker数量，适合批量数据采集场景&lt;br /&gt;- **开源承诺与商业化路径**：核心引擎采用Apache 2.0协议且承诺永不功能阉割，同时正在开发托管版Obscura Cloud提供代理和基础设施服务&lt;br /&gt;&lt;br /&gt;文章URL：&lt;br /&gt;&lt;a href=&quot;https://github.com/h4ckf0r0day/obscura&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://github.com/h4ckf0r0day/obscura&quot;&gt;https://github.com/h4ckf0r0day/obscura&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://github.com/h4ckf0r0day/obscura&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;The headless browser for AI agents and web scraping - h4ckf0r0day/obscura&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;GitHub&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;GitHub - h4ckf0r0day/obscura: The headless browser for AI agents and web scraping&quot; src=&quot;/static/https://cdn4.telesco.pe/file/gChSsl6aMr4ytvpAYe2sqt4326N2b2LchfrOxhI-lQn4e2QmfwcwYB8w99V7JTZJuiTDtJFoZzH41lvUZSsjFss5icuIDdnpi98TWsu_P0rR0KpKh9f6w4_BEMqpNknE-qhcB73aRW4wYxYYTBAehJ_2umG_p3BN-NlywNU9GkH2DlTD98kfRItAavVgFYRYe5F16FNZrpPgE4XC4KOoEylumyNW-BVjM_f7bxJq0_Q2FOHF1vR_N9yNMoZP5YuNyhxvsk_6orbVKo4UYZUsjwebaOcWFERVhJYVH5hih9bwOy35thfkI7MVnWQaS5w91P2llAdftVa_6AeovKUGfA.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;GitHub - h4ckf0r0day/obscura: The headless browser for AI agents and web scraping&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;The headless browser for AI agents and web scraping - h4ckf0r0day/obscura&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《我们将 Node.js 内存占用减少了一半》</title><link>https://channel.meo-ai.com/posts/562</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/562</guid><pubDate>Fri, 20 Feb 2026 08:07:13 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《我们将 Node.js 内存占用减少了一半》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Node&quot; title=&quot;#Node&quot;&gt;#Node&lt;/a&gt;.js &lt;a href=&quot;/search/result?q=%23V8&quot; title=&quot;#V8&quot;&gt;#V8&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96&quot; title=&quot;#性能优化&quot;&gt;#性能优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86&quot; title=&quot;#内存管理&quot;&gt;#内存管理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Docker&quot; title=&quot;#Docker&quot;&gt;#Docker&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;本文介绍了通过启用 V8 引擎的指针压缩（Pointer Compression）技术，在不修改代码的情况下将 Node.js 应用内存占用减少约 50%，且仅带来 2-4% 的平均延迟开销，同时显著降低 P99 延迟。Cloudflare 与 Igalia 合作解决了历史性的&quot;4GB 内存笼&quot;限制，使每个 Worker 线程拥有独立的 4GB 压缩内存空间。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;- 技术原理：指针压缩将 64 位指针转为 32 位偏移量，使每个指针从 8 字节减至 4 字节，内存占用减半，代价是每次堆访问需额外的加减法运算&lt;br /&gt;- 历史障碍：此前 Node.js 未默认启用是因所有 Worker 线程共享单一 4GB 内存空间，2024 年 Cloudflare 与 Igalia 合作推出 IsolateGroups 功能，使每个 V8 实例拥有独立的 4GB 压缩内存笼&lt;br /&gt;- 实验结果：在 Next.js 电商应用基准测试中，指针压缩实现内存减半（2GB→1GB），平均延迟仅增加 2.5-4.2%，但 P99 延迟降低 7-43%，最大延迟降低 6-38%，因更小的堆减少了 GC 暂停时间&lt;br /&gt;- 业务价值：可显著降低 Kubernetes 集群成本、提升多租户 SaaS 密度、支持边缘计算部署、增加 WebSocket 并发连接数&lt;br /&gt;- 兼容性限制：每个 V8 实例仍受 4GB 堆内存限制；使用旧版 NAN 的原生插件不兼容，但 Node-API 插件不受影响&lt;br /&gt;- 使用方式：通过 &lt;code&gt;platformatic/node-caged&lt;/code&gt; Docker 镜像一键替换官方 Node.js 镜像即可启用&lt;br /&gt;&lt;br /&gt;链接：&lt;a href=&quot;https://blog.platformatic.dev/we-cut-nodejs-memory-in-half&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://blog.platformatic.dev/we-cut-nodejs-memory-in-half&quot;&gt;https://blog.platformatic.dev/we-cut-nodejs-memory-in-half&lt;/a&gt;</content:encoded></item></channel></rss>