主要目标是从stream行的Web服务器代码库(用C实现)中学习,优先考虑结构/devise,而不是整个代码中的巧妙技巧。
我没有包含Apache,因为它的代码基础比上面提到的两个更大。
我没有包含Apache,因为它的代码基础比上面提到的两个更大。
其实Apache代码是相当可读的。 它有很大的代码基础,因为它做了很多事情。 但是结构很好,很容易理解。 你也可以检查APR库(Apache Portable Runtime),它有许多小东西可以学习。
国际海事组织,如果你想学习编程,你应该开始低配置文件项目 – 而不是HTTPd,但更简单。
nginx和LightHTTPd(就像Apache一样)都是生产质量软件,意味着非常陡峭的学习曲线。 不幸的是, 学习往往意味着挖掘档案,看看为什么这样 – 随着年龄的增长,任何成熟的项目。
如果你只是简单地进入C和学习设计,你可能想要检查FreeBSD或其衍生产品。 根据我的经验,这是一个更好的起点:那里有很多工具和所有口径的库。 而他们的TODO清单永远不会是空的,作为从哪里开始的指南是很好的。
Ngxinx可能是我遇到的最好的C代码库。 我读过大片的阿帕奇,而且我总是感觉不洁,这是一个单一的混乱。
您不仅可以通过探索Nginx了解网络服务器,而且还可以在Unix和直接从编程架构到元编程技术的基础上编写网络化软件的最佳实践。
我没有听说任何关于Lighttpd的好消息,但与Nginx相比,它的范围是有限的。 因此,如果我是你,我会花时间在nginx上。 虽然lighttpd的范围有限,但可能会对您有所帮助,作为第一个研究的目标。
整洁的技巧总是发生在任何值得信赖的代码库,说实话。 不过,你可能不想听到的答案是,研究两者可能是好的,所以你可以通过交叉学习。 替代方案可能真的让你陷入一个“lighthttpd”或“nginx”的方式等等。