【问题标题】:HTTP Keep Alive benefits on AJAX siteHTTP Keep Alive 对 AJAX 站点的好处
【发布时间】:2012-09-16 02:38:45
【问题描述】:

我们在http://www.beckworthemporium.com/index.php?option=com_rsappt_pro2&view=booking_screen_gad&Itemid=58 有一个相当重的 AJAX 网站

目前每个页面请求使用 5/6 AJAX 请求来返回页面的各个部分,并且是相当密集的 mySQL。在圣诞节之前,我们的流量将缓慢增加。我们会看到使用 keep alive 的好处吗?

【问题讨论】:

    标签: ajax keep-alive


    【解决方案1】:

    你说的是多少流量?如果您打算使用 Keep-alive,那么您可能希望确保您有足够的内存并将 Keep-alive 超时降低到可能的最低值,否则如果您最终获得大量流量,它可能会伤害您。流量过多的网站通常会禁用保持活动功能。

    也可以看看http keep-alive in the modern age

    我在您的网页上生成了一份报告,网址为 http://www.webpagetest.org/result/121008_TX_KB9/

    至于您的 AJAX 调用,无论您是否使用 keep-alive,我都会对其进行改进。我会缓存响应。例如,在您运行 mysql 查询并生成输出后,将其缓存到磁盘几个小时(如果可能,则更长),然后在后续调用中从磁盘中提取尚未过期的数据。这将节省大量并加快整体速度。

    另外,如果您担心速度,我会为您的大量图像资源使用图像精灵。我注意到您的一些图像是占位符并且是 100% 透明的,请考虑仅对这些图像使用 css。这将大大减少您的总体请求。

    我还将启用 mod_expires 并添加一些 Expires 标头。有关使用这些和更多良好实践功能的示例 htaccess 文件,请查看: https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess

    编辑

    Jeepstone,我建议您不要启用 keep-alive,并且可能使用 CDN 和 Parallelize 您的资源。您可能还想查看您的数据库配置。例如 MySQL 的最大连接数较低,您可能希望优化慢查询、连接超时并确保不使用任何持久连接。

    此外,如果您真的关心您的网络堆栈的状态,您可以立即对其进行测试,而不是在有更多真实客户敲门时找出问题所在。我说的是压力/负载测试。

    【讨论】:

    • 当前流量约为每天 250 位用户,但在圣诞节之前,这将稳步增加到每天 1000 位。带宽约为每月 6gb,圣诞节期间增加到约 20gb。很难缓存它们,因为当有大量预订时它们可以快速缓存。我们目前最大的问题是 MaxClients。服务器有点供电不足,我们已经在 8gb 的内存上最大化了。我们目前正在考虑我们的选择,但希望尽可能地改进网站。
    • @Jeepstone 我在上面添加了一个编辑,因为它不适合评论框。
    • 谢谢Anthony,我能问一下你为什么不推荐keepalive吗?我认为 MySQL 查询可能需要一些调整。
    • 找到一种方法使您的响应可缓存,然后您可以单独处理缓存(在客户端、反向代理或 CDN 上缓存)。但是让它们可缓存是第一步。
    • @Jeepstone 我建议您不要使用它,因为您当前存在内存问题并且您的盒子电源不足。使用 keepalive,您可能会增加四倍的活动连接,因此 apache 需要 ram。如果您使用 php 而不是 FastCGI,那就更是如此。如果你迁移到 FastCGI,你可以降低每个 php/apache 线程的内存占用。 David Roussel 的建议也是一个不错的建议,从提高可缓存性开始
    【解决方案2】:

    大型网站存在两个大问题:并发连接和延迟。 看看你的圣诞节数字,我不认为你的网站很大。因此,我不会看到使用 Keep-Alive 有很大的好处。启用 Keep-Alive 可能会增加空闲连接的数量,这无济于事。

    我会走负载测试您的网站的路线,看看最大的瓶颈是什么并修复它。通过找到最大的瓶颈进行迭代并改进。您可能会在您的实例中发现数据库是罪魁祸首。有免费或半免费的负载测试工具:VS Test Suite 为 MSDN 订阅者免费提供多达 250 个虚拟真实并发用户,这超出了您的需要。

    【讨论】:

    • 您还可以查看使用 Chrome PageSpeed 等工具并找出可以改进的地方。 PageSpeed 建议的“速赢”方法是为您拥有的约 25 个静态服务对象设置至少 7 天的缓存到期日期。
    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2016-09-07
    相关资源
    最近更新 更多