2016-08-06 116 views
0

Ich versuche zu lernen, wie Caching in REST funktioniert. Ich kenne alle Header wie Cache Control, Max-Age, Expires etc. Ich ging zB das Beispiel this nach.Implementierung von Caching in REST (JAX - RS)

Was ich über HTTP-Cache weiß (ich kann falsch liegen), Browser sendet HTTP-Anfrage an den Server, und wenn es Cache-Header hat, speichert Browser die Antwort im lokalen Cache. Wenn der Client eine andere Anforderung für dieselbe Antwort anfordert, überprüft der Browser den Cache, und wenn die Antwort nicht abgelaufen ist, kehrt er aus dem Cache zurück, anstatt den Server anzurufen.

Beispiel in diesem Link, Client-Server Server jedes Mal und Server überprüft, ob Client abgelaufen Kopie hat oder nicht. In diesem Fall treffen wir den Server jedes Mal, anstatt Daten aus dem Cache abzurufen.

Fehle ich hier etwas?

Antwort

1

In erwähnten post-serverseitigen Cache wird verwendet.

Mit anderen Worten:

Resteasy Cache kann Aufruf Userdatabase vermeiden, wenn es bereits angeforderte Benutzer enthält (von EntityTag Schlüsseln, basierend auf Benutzer-ID).

Alles ist auf Serverseite getan. Es hat keine Verbindung mit den Kopfzeilen für Anfrage-/Antwort-Verfallsdatum/-uhrzeit.

1

Dies könnte eine Hilfe sein:

Cache Antwort nur für GET-Anforderung, wenn Antwort 200 OK ist,

Testumgebung: Jboss6.4 Maven 3,0

Dependency:

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-cache-core</artifactId> 
    <version>Any version after 3.0</version> 
</dependency> 

Codeänderungen: Fügen Sie Singleton für ServerCacheFeature in Ihrer Anwendungsklasse hinzu.

singletons.add(new ServerCacheFeature()); 

Fügen Sie diese Anmerkung an Ihre Funktion:

@Cache(maxAge=15, mustRevalidate = false, noStore = false, proxyRevalidate = false, sMaxAge = 15) 

noStore kann Gebrauch zu aktivieren/deaktivieren zwischenzuspeichern bzw.

sein