2011-11-18 52 views
1
REST服務調用緩存

我一直在開發一個小的Silverlight客戶端,它會跟使用WCF的WebAPI .... REST服務時所建的服務使用GET調用時,它會一個長時間運行的進程的踢,這將產生一個資源,所以該服務將返回'接受'和URI在一個位置標題,資源將被發現。現在頭和Silverlight的

Server: ASP.NET Development Server/10.0.0.0 
Date: Fri, 18 Nov 2011 09:00:17 GMT 
X-AspNet-Version: 4.0.30319 
Content-Length: 3 
Location: http://localhost:52878/myservice?fileid=f68201f6-9d77-4818-820e-e5e796e9710a 
Cache-Control public, max-age=21600 
Expires: 21600 
Content-Type: text/plain 
Connection: Close 

,在我的Silverlight客戶端,我需要訪問這個頭信息,但是使用BrowserHTTP棧,這是不可能的......所以我切換到ClientHTTP,這使得它可能對我來說訪問返回的頭信息。 然而ClientHTTP堆棧不​​支持內容緩存:

http://www.wintellect.com/CS/blogs/jprosise/archive/2009/10/14/silverlight-3-s-new-client-networking-stack.aspx

這是造成我的麻煩.....我wan't將返回6小時相同的資源,前一個新的產生。

有沒有一種方法,以獲得最佳......都能夠訪問的頭信息,並有內容緩存的?使用標題

TIA

索倫

回答

0

停止返回由客戶機代碼所需的信息。

如果包括在實體主體使用生的或在一些消息格式(例如,XML或JSON)編碼的,那麼您可以繼續使用BrowserHTTP並受益於它的高速緩存所需的信息。

+0

我已經加入了與伊恩·羅賓遜一類,而他主張使用此頭......根據他這是做的正確的方式....所以我寧願不把它放在身體... – smolesen

+0

@smolesen:我提交了「做的正確的方式」是指一)工程和b)是最簡單的。其他原因可能有其他原因,他們爲什麼做不同的事情,但這些原因是否與你實際需要的事情相匹配。 – AnthonyWJones

0

使用標題是傳達這一信息的正確方法。這就是它處於標準的原因。 我不這樣做的Silverlight,但我從後得到的是你現在需要實現的緩存。使用BrowserHttp利用瀏覽器緩存機制。現在使用ClientHttp你正在接近金屬,你將不得不實施緩存。

+0

定義「正確」? – AnthonyWJones

+0

正確:遵循現有的標準來定義複雜問題的解決方案,而不是提出新的解決方案。今天的快速解決方案是明天的問題。通過增加一種傳遞緩存的方式,您可能會爲未來的開發人員添加模糊性。只要使用存在的東西。整個Web使用頭文件和定義在其中的緩存控件,這很簡單,而且似乎起作用 – suing