Jsp缓存问题

时间:2010-12-27 10:34:48

标签: java caching jsp jsp-tags

我使用javascript和css构建一个带有以下标记的多级下拉菜单:

<ul>
   <li>menu item 1</li>
       <ul>
         <li><a href="#">sub menu menu item 1</a></li>
         ................. 

此标记由自定义JSP标记<mui:menu .../>生成,该标记从数据库加载菜单数据。

我希望我的jsp页面可以像这样:

  • 如果自我上次访问该页面后菜单数据没有改变,只需使用浏览器的缓存
  • 否则从数据库加载......

我该怎么办?我不太了解缓存机制的细节。

2 个答案:

答案 0 :(得分:2)

拥有客户端缓存意味着如果缓存中存储的内容仍然是新鲜的(尚未过期),浏览器将不会转到服务器获取内容。如果您想使用菜单的浏览器缓存,则必须start learning about it

但恕我直言,我认为你没有以正确的方式接近这一点。您的菜单由JSP自定义标记生成。 JSP在服务器上运行,因此每次请求包含<mui:menu .../>标记的资源时,标记都会从数据库中提取数据。

我想你可以将这个标签放在一个单独的资源中,你可以用不变的GET查询(这样浏览器可以缓存结果)来自客户端,我想你可以用HTTP 304 Not Modified来回应信号缓存的值仍然有效,但事实是,在您的特定情况下,最好在服务器端而不是客户端处理缓存

让JSP标记处理缓存,只有在发生变化时才转到数据库。

只是我的两分钱!

答案 1 :(得分:1)

查看OSCache - 它有JSP标记,可以帮助您缓存生成的菜单,并且可以使用它轻松控制内容块。

可以在http://www.opensymphony.com/oscache/

找到OSCache