Answers:
像漫步者这样的网站如何如此快地提供动态内容?...这纯粹是Nginx的功能吗?我应该在哪里研究这些功能?
这与所使用的Web服务器几乎没有关系-nginx,IIS和Apache都“足够快”,并且通常可以在几毫秒内完成工作。nginx的速度比Apache快得多,但这仅意味着网站所有者将需要更少的服务器作为Web服务部件-nginx不会更快地将数据传输给您。
不太重要的部分是服务器端速度,即创建HTML所花费的时间。更为重要的部分是“前端”性能,即我的意思是HTML,CSS,Javascript和图像,它们的数量,它们的大小以及它们的正确传递(HTTP压缩,缓存)。
当然,服务器端的速度仍然很重要,我并不是说应该忽略它,或者不要紧。但是通常这是最终用户速度的最小部分-服务器端工作通常在不到500毫秒的时间内完成,但是在经过3,000-5,000毫秒之前页面尚未准备就绪。这段时间的大部分时间用于下载前端资源(CSS,Javascript,图像)。
史蒂夫·索德斯(Steve Souders)在Yahoo期间从事原始工作,现在他在Google。他的第一本书“高性能网站”是学习更多有关创建快速网站的最佳起点。这段视频和这些设计规则中可以找到与他书中相同的材料。但是,我发现这本书读起来很快,更容易理解。
您可以通过WebPageTest.org的测试器来运行这些站点,这会使您对这些站点的前端部分以及它们变快或变慢的原因有很好的感觉。
我相信,如果从Nginx提供服务,则serverfault.com将比IIS 7快得多(假设两种情况下的数据库访问时间相同)。这是一个公平的假设吗?
不,那是个误会。:-)
与用作完整服务器相比,Nginx更常用于负载均衡其他应用程序/服务器并提供静态内容。
例如,您可能使用许多python框架之一编写了一个应用程序,并使nginx成为该实例的许多实例的前端(可能分布在多台计算机上)。在这种情况下,nginx服务器有两个用途:它直接处理对静态内容(例如图像和样式表)的请求(由于其设计,它可以非常快地完成此操作),并且将动态请求传递给应用程序,以将负载分散到已知的所有实例之间。这也是Ruby on Rails社区中非常流行的配置。
还有其他两个可能的原因,使Rambler看上去比本地Yahoo服务更快。首先,本地Yahoo PoP可能只是没有足够的资源来满足它更快地获取的请求数量,因此也许简单地添加更多硬件(假设软件以这种方式很好地扩展)就可以加快它的速度(但是,大概差异不大)。值得维护额外套件的成本,否则Yahoo会做到这一点)。另一个很大的不同可能是后端而不是Web服务器-毫无疑问,这两个服务的数据库安排将有很大不同,即使它们不可能运行完全相同的各种查询(以及专用于数据库架构的硬件也将产生重大影响)。
分析为什么一项服务比另一项服务(通常或在特定情况下)要快的原因通常不会得出一个简单的答案-有许多方法可以设计一个旨在扩展到成千上万用户的应用程序,每个应用程序都具有自身的利益,问题和折衷方案,即使您将所有这些差异都考虑在内,每个站点的用户群也会有所不同,此外,网络问题也超出了设计人员的控制范围。
这是一个很好的解释:http : //www.aosabook.org/en/nginx.html
我很难看到serverfault更快(SO可能会因为流量而导致加载问题?),因为在我这里,这已经是EU中的即时页面加载。与大多数本地新闻站点等相比,它更快,响应速度更快。
加载时间和延迟方面的大多数明显问题都来自服务器与最终用户imo之间,而不是服务器的实际性能(除非有人确定了大小或设计有误)。可以使用不同的方式对不同的站点进行路由,并且对我来说,在我所在的国家/地区的站点很有可能比整个地球上的站点具有更大的延迟-这全都取决于太多的变量,您不能说仅通过服务即可解决升级/切换,除非您知道这是特定用途的问题所在...
显然,在服务器上进行各种缓存具有很大的不同,但是据我所知,所有这些站点都已经做到了。