是否有适合针对API有限Web服务进行开发的HTTP缓存?

时间:2010-03-01 04:28:00

标签: http caching

在某些时候,我想要针对类似真实的Web服务运行我的应用程序。 Web服务有一个我可以看到的API调用限制。我考虑过手动序列化一些JSON文件,但看起来这基本上是在缓解困难。

我是否可以在本地计算机上运行HTTP缓存,这会激活(直到我手动重置)缓存请求到某个站点?

2 个答案:

答案 0 :(得分:0)

你说“缓存”,但我认为你的意思是“过滤”或“代理”。我想到的第一个解决方案是可以使用iptables system,使用-limit和-hitcount规则在一些阈值之后将数据包丢弃到Web服务器。我甚至不会假装能胜任iptables配置。

第二个课程可能是像Squid这样使用其delay pool mechanism的网络代理。期待那里的学习曲线。

答案 1 :(得分:0)

我已经构建了一个处理开发请求的代理服务器,并确保API调用在测试中受到重创。这就是我使用ASP.Net MVC代理的方式:

public ActionResult ProxyRequest(string url, string request)
{
   object cachedRequest = Cache[url];
   if(cachedRequest != null)
   {
      return Content(cachedRequest, "application/json");
   }
   else
   {
      // make the http request here
      Cache[url] = cachedRequest;
      return Content(cachedRequest, "application/json");
   }
}

我现在不在我的开发盒上,所以我从头开始做这个,但概念是一样的。我没有使用Cache [url] = cachedRequest,而是使用了Cache.Insert方法,但它有很多我不记得的参数。 (变得懒惰并在它周围构建了一个包装类,所以我不必记住它)

此设置代理我的JS代码中的所有JSON请求(使用var isDevelopment = true(|| false))并使用isDevelopment变量知道是代理请求还是直接命中服务器。