繁体   English   中英

拦截传出的servlet http请求

[英]Intercepting outgoing servlet http requests

我正在研究一个学校项目,我从中查询并从中央服务器接收一些相当大的XML文档。 这在开始时很好,因为我很少提出这些请求(HTTP GET),但随着项目的进展,我想出了更多关于这些数据的事情,现在我有servlet请求3或4个XML文档,每个文档都在它是自己独立的GET请求,导致页面生成时间超过25秒。

不可能改变数据的服务方式,也不可能改变它的请求方式,因为我有一个相当大的代码库,并且它不像它应该的那样解耦。

有什么聪明的方法可以在我的servlet执行这些GET请求时进行监听,拦截它们,并且可能为它们提供本地缓存版本? 数据不易变,因此不需要“实时”数据。

到目前为止,我还没有找到有关收听Tomcat发出的OUT请求的信息......

我认为很多将取决于您的缓存命中率。 如果定期请求相同的3-4个文档(或一些小组文档),则可能有本地高速缓存代理服务器(如Squid)。 可以将Java 配置为使用代理服务器进行HTTP请求。

您可以使用HttpFilter实现此功能。 它可以用作缓存。 如果请求的文档已经在缓存中,则返回它; 如果没有将HTTP请求转发给您的servlet。

我最终使用ContextListener在启动时加载大部分数据,以及servlet上下文属性中的“到期日期”。 它使一些启动缓慢(9个GetRequests到中央服务器!),但大大减少了我们的页面加载时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM