事件MPM与Nginx的设计并不完全相同,但显然旨在使Keepalive更加稳定并更快地发送静态文件.我的理解是事件MPM有点用词不当,因为:
不幸的是,Apache一直在失去市场份额,大多数基准测试都是MPM事件的诅咒.基准测试是否存在缺陷,或者事件MPM对Nginx的影响是否真的如此糟糕?即使有这些限制,在正常流量(非恶意)和较小的文件下,它应该与Nginx有一定的竞争力.例如,它应该在慢速连接上通过php-fpm为PHP生成的文档提供竞争,因为文档将被缓冲(即使是ssl'd和gzip)并且是异步发送的.使用压缩或不使用压缩的SSL和非SSL连接的工作方式与Nginx在此类工作负载上的工作方式不同.
那为什么它不会在各种基准测试中闪耀?它出什么问题了?或者基准测试有什么问题?是一个主要的网站使用它作为它可以执行的权威的诉求?
我记得一个非常快速的Linux内核模块,名为"TUX",用于静态文件,以回答IIS优秀的Linux静态文件Web服务性能并解决"C10K问题".现在我一直看到:
...用于"快速静态文件服务".如果您的操作系统具有正确的功能,快速提供静态文件并不困难.从那以后,Windows已经发明了IO完成端口,重叠的I/O等.
Tux是否因为安全隐患而死亡?这是Kqueue/Epoll与Sendfile等功能相结合的实验吗?提供100%静态内容的最佳解决方案是什么 - 比如50张左右的图像包装来模拟"翻书"电影.
我理解这是"服务器相关"的问题,但它也是理论上的.如果它纯粹是静态的,那么CDN真的会变得更好吗?
我在某个未命名供应商的文档中看到了此代码示例.它似乎异步加载脚本,然后从中调用一个函数.我意识到if-undefined检查可以防止明显的错误,但这不是完全错误的吗?
我相信在IE8/9中它可以正常工作但阻止执行,直到LOADER_URL脚本加载并执行; 我相信许多其他支持async属性的浏览器,这只会导致内联块仅在部分时间内在if-block内执行代码.该文档指出"标签是异步的,不会减慢页面的加载速度."
<script type="text/javascript" src="LOADER_URL" async="true"></script>
<script type="text/javascript">
if (typeof (OBJECT_DEFINED_IN_LOADER_URL) != "undefined") { OBJECT_DEFINED_IN_LOADER_URL.Load(false); }
</script>
Run Code Online (Sandbox Code Playgroud)
查看其文档的早期版本,它没有async属性的建议,也没有提出此声明.一些技术作家是否犯了一个错误并且在没有在所有浏览器中进行充分测试的情况下说"是的,那会起作用"吗?在IE <= 9中,它将一直有效.因为异步代码调试非常有趣......也许它对他们有用......
这是我的怀疑:)
asynchronous ×2
nginx ×2
apache ×1
cdn ×1
epoll ×1
javascript ×1
lighttpd ×1
linux-kernel ×1
php ×1