我正在开展一个学校项目,在该项目中,我从中央服务器查询并接收一些相当大的XML文档。这在开始时很好,因为我很少提出这些请求(HTTP GET),但随着项目的进展,我想出了更多关于这些数据的事情,现在我有servlet请求3或4个XML文档,每个文档都在它是自己独立的GET请求,导致页面生成时间超过25秒。
不可能改变数据的提供方式,也不可能改变它的请求方式,因为我有一个相当大的代码库,而且它不像它应该的那样解耦。
当我的servlet执行这些GET请求,拦截它们并且可能为它们提供本地缓存版本时,是否有一种智能方式可以监听?数据不易变,因此不需要“实时”数据。
到目前为止,我还无法找到有关收听Tomcat发出的OUT请求的信息......
答案 0 :(得分:1)
我认为很多将取决于您的缓存命中率。如果定期请求相同的3-4个文档(或一些小组文档),则可能有本地高速缓存代理服务器(如Squid)。 Java可以configured使用代理服务器进行HTTP请求。
答案 1 :(得分:0)
您可以使用HttpFilter实现此功能。它可以用作缓存。如果请求的文档已经在缓存中,则返回它;如果没有将HTTP请求转发给您的servlet。
答案 2 :(得分:0)
我最终使用ContextListener在启动时加载大部分数据,以及servlet上下文属性中的“到期日期”。它使一些启动缓慢(9个GetRequests到中央服务器!),但大大减少了我们的页面加载时间。