2016-08-06 44 views
0

我想了解在REST中緩存的工作原理。我知道像緩存控制,最大年齡,過期等所有標題。我正在通過this後提及的示例。在REST中實現緩存(JAX-RS)

我所知道的Http緩存是(我可能是錯的),瀏覽器向服務器發送Http請求,如果它有緩存頭,瀏覽器會將響應存儲在本地緩存中。如果客戶端再次請求相同的響應,瀏覽器將檢查緩存,如果響應未過期,則它將從緩存中返回而不是向服務器請求。

此鏈接中給出的示例,客戶端每次訪問服務器時,服務器檢查客戶端是否已過期複製。在這種情況下,我們每次都選擇服務器,而不是從緩存中檢索數據。

我在這裏錯過了什麼嗎?

回答

1

在提到的後期服務器端緩存中使用。

換句話說:

的RESTEasy緩存可以避免調用UserDatabase如果它已經包含請求的用戶(通過鍵EntityTag基於用戶ID)。

一切都在服務器端完成。它與過期日期/時間請求/響應標題沒有任何關聯。

1

這可能會有所幫助:只對GET請求時,響應200 OK

緩存響應,

測試環境:Jboss6.4和Maven 3.0

依賴

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

代碼更改:在應用程序類中爲ServerCacheFeature添加單例。

singletons.add(new ServerCacheFeature()); 

註釋添加到您的函數:

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

noStore可以使用啓用/禁用緩存RESP