最近看了下书的Socket这一章节,趁着心理还有点点热度,试试用原生socket写一个Lisp版本的简单静态文件服务器
代码加起来就3~4kb,一百行不到,调用的第三方库主要就是编码(gzip),实现了长连接以减少调用次数
Connection: keep-alive
估计用C语言来实现要累得多,不过这里没有用到macro,也没有缓存静态文件以减少每次重新读取
示例:
nginx 代理后:http://chaos.leovinci.cn/
直接Lisp: http://chaos.leovinci.cn:2245/
(start-server :port 2022 :root "~/somewhere/static")
疑问:我特意增加了一个Keep
头字段,显示同一个 socket 加载了第几个request,对那些很多js/css要加载的网页就很有用了:
意外的是刷新页面后该字段在不断增大(同样的Port应证了是同一个socket)
难道刷新页面后有些socket不会立刻中断??