1. 为什么基于 stream 的静态服务器拥有更高的性能
2. 为什么基于 stream 后,serve 等静态资源服务器仍然会计算 Content-Length
3. 继续完善静态服务器,使其基于 stream,并能给出正确的 Content-Length。
4. 继续完善静态服务器,使其作为一个命令行工具,支持指定端口号、读取目录、404、stream (甚至 trailingSlash、cleanUrls、rewrite、redirect 等)。可参考 serve-handler。
5. 什么是 rewrite 和 redirect
最重要的区别是是否为服务器控制
rewrite:假设 /a 页面需要重写到 /b 页面。用户向服务器请求 /a 页面,服务器扔给用户 /b 的页面内容。(由服务端自己控制的, 服务器程序内部进行路由的转发)
redirect:假设 /a 页面需要重定向到 /b 页面。用户向服务器请求 /a 页面,服务器告诉用户,你去请求 /b 页面。并扔给了用户一个 301/302 的状态码和一个指向 /b 页面的 location header。用户又去向 /b 页面发送了请求。(重新交给浏览器,服务器不直接做处理)
用户指 user-agent,比如浏览器、curl,前端来说,比如 fetch、axios 等。