Java Web Application:如何实现高速缓存技术?
我正在开发一个 Java Web 应用程序,该应用程序通过从 Web 服务加载的大型 XML 配置文件来为其行为提供支持。由于在访问应用程序的特定部分之前实际上不需要这些文件,因此它们会延迟加载。当需要其中一个文件时,会将查询发送到 Web 服务以检索相应的文件。由于某些配置文件可能会被使用得更多,比其他配置文件更频繁,因此我想设置某种缓存(可能有1小时的过期时间),以避免一遍又一遍地请求相同的文件。
对于所有会话中的所有用户,Web 服务返回的文件都是相同的。我不使用JSP,JSF或任何其他花哨的框架,只是普通的servlet。
我的问题是,在java Web应用程序中实现这种全局静态缓存的最佳实践是什么?单例类是否合适,或者由于 J2EE 容器而会出现奇怪的行为?我应该通过JNDI在某个地方公开一些东西吗?我该怎么做才能使我的缓存不会在群集环境中被搞砸(可以,但不是必需的,每个群集服务器有一个缓存)?
鉴于上述信息,将负责缓存的对象作为 ServletContext 属性放置是正确的实现吗?
注意:我不想在启动时加载所有这些并完成它,因为那会
1). 每当我的应用程序启动
时,Web 服务就会重载 2)。当我的应用程序运行时,这些文件可能会更改,因此无论如何我都必须重新查询它们
3)。我仍然需要一个全局可访问的缓存,所以我的问题仍然成立
更新:使用缓存代理(如 squid)可能是一个好主意,但对 Web 服务的每个请求都会在 Post Data 中发送相当大的 XML 查询,每次都可能不同。只有 Web 应用程序真正知道对 Web 服务的两个不同调用实际上是等效的。
感谢您的帮助