Caching 是否有对请求/响应缓冲和延迟连接提供明确、可配置支持的HTTP代理?

Caching 是否有对请求/响应缓冲和延迟连接提供明确、可配置支持的HTTP代理?,caching,proxy,mobile,nginx,squid,Caching,Proxy,Mobile,Nginx,Squid,在处理移动客户端时,HTTP请求传输过程中通常会出现多秒延迟。如果您使用预工作Apache提供页面或服务,则子进程将在几秒钟内为单个移动客户端服务,即使您的应用程序服务器逻辑在5毫秒内完成。我正在寻找支持以下功能的HTTP服务器、平衡器或代理服务器: 请求到达代理。代理开始在RAM或磁盘中缓冲请求,包括头和POST/PUT正文。代理未打开到后端服务器的连接。这可能是最重要的部分 在以下情况下,代理服务器停止缓冲请求: 已达到大小限制(例如4KB),或 请求已完全收到,包括标题和正文 只有现在

在处理移动客户端时,HTTP请求传输过程中通常会出现多秒延迟。如果您使用预工作Apache提供页面或服务,则子进程将在几秒钟内为单个移动客户端服务,即使您的应用程序服务器逻辑在5毫秒内完成。我正在寻找支持以下功能的HTTP服务器、平衡器或代理服务器:

  • 请求到达代理。代理开始在RAM或磁盘中缓冲请求,包括头和POST/PUT正文。代理未打开到后端服务器的连接。这可能是最重要的部分

  • 在以下情况下,代理服务器停止缓冲请求:

    • 已达到大小限制(例如4KB),或
    • 请求已完全收到,包括标题和正文
  • 只有现在,当请求(部分)存储在内存中时,才会打开到后端的连接并中继请求

  • 后端发送回响应。代理服务器再次立即开始对其进行缓冲(最大为更大的大小,比如64KB)

  • 由于代理具有足够大的缓冲区,后端响应将在几毫秒内完全存储在代理服务器中,后端进程/线程可以自由处理更多请求。后端连接立即关闭

  • 代理将响应发送回移动客户端,尽可能快或慢,而不必连接到后端占用资源

  • 我相当肯定你可以用Squid做4-6,nginx似乎支持1-3(在这方面看起来相当独特)。我的问题是:是否有代理服务器能够理解这些缓冲,并且在准备就绪之前不打开连接?也许只是有一点Apache配置fu使得这种缓冲行为变得微不足道?他们中有谁认为它不是恐龙般的Squid,并且支持精简的单流程、异步、基于事件的执行模型

    (旁白:我会使用nginx,但它不支持分块的帖子正文,这使得它无法为移动客户端提供内容。是的,便宜的50美元手机喜欢分块的帖子……唉)

    ,Telerik的免费工具,至少做了一些你想要的事情

    具体来说,转到
    Rules | Custom Rules…
    ,您可以在连接过程中的所有点添加任意Javascript代码。您可以通过
    sleep()
    调用来模拟一些您需要的东西


    但是,我不确定这个方法是否能提供您想要的良好缓冲控制。尽管如此,有些东西总比什么都没有好?

    不幸的是,我还不知道有什么现成的解决方案。在最坏的情况下,考虑一下自己开发,比如说使用java NIO——它不应该超过一个星期。

    < P>使用NGIX和枪乌贼(客户端SQUID -nGNX-后端),怎么样?当从后端返回数据时,Squid会将其从C-T-E:分块转换为具有设置内容长度的常规流,因此它可能还可以规范POST。

    Nginx可以做任何您想要的事情。您要查找的配置参数包括


    Squid 2.7可以通过补丁支持1-3:

    我已经测试过了,发现它工作得很好,附带的条件是它只缓冲到内存,而不是磁盘(当然,除非它交换,而且您不希望这样),所以您需要在为您的工作负载适当配置的框上运行它


    对于大多数服务器和中介来说,分块帖子是一个问题。你确定你需要支持吗?通常,客户端在收到411后应该重试该请求。

    看起来是一个非常酷的HTTP调试工具!不幸的是,我想要的是一个代理服务器,而不是一个用于HTTP监控/操作的桌面UI。Nginx不支持分块的帖子正文,许多Java ME移动客户端都会强制发送。我已经在主要为桌面浏览器提供服务的网站上使用了nginx,而且它非常棒,但是在处理大多数Java ME客户端时,它是无用的。是的,我刚刚注意到运行nginx 0.7.17。我会在nginx邮件列表中提到它。这似乎是不开发自定义解决方案的唯一方法,我不知道Squid将块体转换为1.0请求。谢谢你的提醒!