构build一个高性能的静态网站

我期望build立一个高性能的网站。 它有成千上万的静态HTML页面,根据表单提交具体呈现。 我有一个ruby脚本生成这些静态HTML页面,并将其存储在服务器上。

现在我正在查看网站上的1000多个并发用户。 哪种服务是最快捷的方式。 我相信Nginx + Varnish可以为这种场景做出非常好的工作。 有没有进一步的优化,我可以做?

有没有一种方法,而不是NGinx + Varnish的HTML页面的磁盘,它击中内存。 莫名其妙地使用Memcached。

我已经在考虑将其他静态资产(如图片/样式表)转移到CDN。 请告知最好的方法是什么。

谢谢!

[转贴自StackExchange: https ://stackoverflow.com/questions/6439484/building-a-high-performance-static-website ]

虽然清漆是灵活的VCL绝对是梦幻般的,它真的更适合cachingdynamic网站。 关于nginx性能优于varnish(至less在小的静态对象上)似乎已经达成共识。

您可以使用proxy_cache,fastcgi_cache或直接使用nginx从磁盘直接提供服务。 我知道它支持memcached,但memcached的唯一好处是如果你有多个服务器共享相同的caching – 除此之外,我只能看到额外的开销。

你可以让你的文件系统(希望RAID控制器)caching(最常用的)数据,或者只是把它粘在一个ramdisk上!

我相信,一个漂亮的预算Xeon服务器与几GB的RAM很容易将每秒处理几千个请求,因为你真的只有静态内容。 我也认为可能预压缩所有的静态内容,所以你不会为每个请求添加额外的ovearhead。

没有任何事情只是把文件推送到客户端。 如果你能做到这一点,我会努力做到这一点,因为它会很容易扩展,并不需要花哨的caching,但merly只是把准备好的东西运送到客户端。 Nginx在这方面特别擅长。 由于其基于事件的处理模型,它将使用更less的资源,并且与具有许多同时连接的线程清漆相比,可能会更快。

基本的文件系统也非常擅长caching重复读取的文件。 因此,我认为你只需要一台简单的服务器就可以了,而不需要太多的CPU资源,但是足够的内存为文件系统caching提供了一个很好的I / O子系统。 最佳系统将能够cachingRAM中所有需要的对象,所以你应该可以使用大小约为(工作集+ 1GB)的系统。 根据对象的大小,我也强烈推荐至less使用SSD作为旋转锈蚀的中间caching层,以便可以快速检索不在RAM中的对象。 您将观察到的I / O模式可能是相当随机的,这是固态硬盘可以轻松完成的,但是旋转磁盘相当糟糕。

一般来说,一个重要的测量不是用户上网的数量,而是实际到您的服务器的TCP连接的实际数量以及所需的吞吐量。 通过一些调整,你可以很容易地用一个价值3000美元的系统填充一个千兆pipe道。

一个更标准的方法来做到这一点将产生的结果,然后提供后续请求某种caching。

你可以在代码中使用类似redis或memcached的方法来做到这一点(请参阅https://stackoverflow.com/questions/868690/good-examples-of-python-memcache-memcached-being-used-in-python )。 您也可以使用像nginx这样的caching代理来自动执行此操作。

(低质量的回答传入,其他人比我更了解这个东西):

我很确定nginx结合了炽热的I / O(RAM + SSD),可以轻松地为纯粹的静态HTML内容服务1000个客户端。