2010-12-27 8 views
0

Ich benutze JavaScript und CSS eine Multi-Level-Drop-Down-Menü mit folgenden Markups zu bauen:Jsp Cache Problem

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

Dieses Markup generiert <mui:menu .../> durch einen benutzerdefinierten JSP-Tag, das Menü Daten aus einer Datenbank lädt.

Ich hoffe, meine jsp Seite wie folgt verhalten:

  • wenn Menüdaten seit dem letzten Mal nicht geändert ich die Seite besucht, nur Cache verwenden Browser
  • sonst aus der Datenbank laden ...

Wie kann ich es tun? Ich weiß nicht viel über Cache-Mechanismus.

Antwort

2

Ein Client-Cache bedeutet, dass der Browser nicht zum Inhalt auf den Server geht, wenn das, was im Cache gespeichert ist, noch frisch ist (noch nicht abgelaufen). Wenn Sie mit dem Browser-Cache für Ihr Menü spielen möchten, müssen Sie start learning about it.

Aber IMHO Ich denke, Sie nähern sich dies nicht den richtigen Weg. Ihr Menü wird von einem benutzerdefinierten JSP-Tag generiert. JSP wird auf dem Server ausgeführt. Daher werden bei jeder Anforderung der Ressource mit dem Tag <mui:menu .../> Daten aus der Datenbank abgerufen.

Ich denke, Sie könnten dieses Tag in einer separaten Ressource haben, die Sie mit einem nicht ändern GET abfragen können (so dass Browser Ergebnis cachen) vom Client, und ich denke, Sie könnten mit einem HTTP 304 Not Modified zu signalisieren, dass der zwischengespeicherte Wert ist immer noch gültig, aber Tatsache ist, in Ihrem speziellen Fall ist es besser, Cache auf der Serverseite nicht die Clientseite zu behandeln.

Lassen Sie das JSP-Tag den Cache behandeln und gehen Sie nur zur Datenbank, wenn sich etwas geändert hat.

Nur meine zwei Cent!

+0

Dank finden dpb.so Es dass JSTL scheint verwendet, ist keine gute Lösung für meinen speziellen Fall. Ich möchte alles zwischenspeichern, was zwischengespeichert werden kann, um Bandbreite zu sparen ... aber ich denke, dass ich zuerst mehr über den Cache-Mechanismus erfahren muss, dann überlege, was getan werden kann und was besser ist. – idiotgenius

1

Untersuchen Sie OSCache - es hat JSP-Tags, die Ihnen helfen können, das generierte Menü zwischenzuspeichern, und Sie können Blöcke von Inhalt damit leicht steuern.

OSCache kann bei http://www.opensymphony.com/oscache/