2012-10-09 111 views
5

我有一個正在被輪詢的站點,對於來自多個客戶端(瀏覽器,其他應用程序,unix shell腳本,python腳本等)的相同資源的JSON表示,這個站點正在進行輪詢。openrasta中的服務器端緩存

我想添加一些緩存,使一些資源在服務器內緩存一段可配置的時間,以避免處理請求並將資源序列化爲JSON的CPU命中。我當然可以將它們自己緩存在處理程序中,但是會在每個請求中產生序列化命中,並且也不得不修改大量的處理程序。

我看過openrasta緩存模塊,但認爲這隻用於控制瀏覽器緩存?
因此,任何有關如何獲得openrasta緩存資源的渲染後的代表性,編解碼器生成後的建議?

感謝

+0

應該補充說,能夠以編程方式使緩存無效,因爲幾乎所有對資源的更新都通過處理程序進入 –

+0

您正在使用哪個版本的.net? – JPReddy

+0

我正在使用.net 4.0 ..爲什麼? –

回答

1

openrasta緩存確實有服務器端緩存的初步支持,與API,你可以映射到asp.net服務器端緩存,使用ServerCaching屬性。這表示它不完整,對於這個問題也不是openrasta緩存。這是一個需要幾天的工作才能達到一個良好的v1的0.2,它完全支持我想支持的所有場景,即asp.net緩存基礎架構目前不支持的場景(主要是讓OpenRasta中的緩存工作完全像一個http媒介,而不是一個對象,以.net爲中心的存在於asp.net land中,包括客戶端控制服務器高速緩存,以便客戶端可以強制服務器重新執行查詢)。由於我目前沒有客戶端項目正在進行緩存工作,因此很難證明該插件的任何進一步工作是正確的,所以我現在沒有編寫任何代碼。我確實有4天免費提供,所以如果你希望openrasta-caching能夠滿足你的任何要求,那麼可以適應4天的工作。

您可以使用IOperationInterceptor實現更簡單的操作,並使用它來插入asp.net管道,或者更友好的使用squid實現緩存,並依靠openrasta緩存生成正確的http緩存說明。

這就是說,對於你的問題,如果成本在json中,你可能甚至不需要服務器緩存。如果您將最後一次修改或Etag映射到處理程序返回的內容,它將在適當的情況下正確生成304,並且繞過json呈現一起,只要您的客戶端執行條件請求(應該)。

還有一個建議的API,允許您通過對上次修改/ etag進行第一次查詢來返回304而不檢索任何數據,從而進一步優化您的API。