by Roberto Gamboni on Mar 07, 2009
たいしたニュースじゃないが、Waves をけっこう弄ったので blog を更新しようと思う。 幸運にもいつも言ってるように Waves の 0.83リリースで興味深い新しい特徴がやってきます。
例えば、 Waves はありがたいことにRFC 2616のキャッシュ使用をほとんど実装しているRack ミドルウェアの一部である Rack::Cache を統合して HTTP キャッシングをフルサポートしました。 Rack::Cache relies entirely on standard HTTP headers produced by your application, so (ndr: finally) there is no need for an application level caching API. The following HTTP caching features are currently supported:
Expiration-based caching. Responses are served from cache while fresh without consulting the backend application. The Cache-Control: max-age=N and Expires response headers control a response’s freshness lifetime.
Validation. The cache stores responses even if no freshness information is present so long as there’s a cache validator (Last-Modified or ETag). Subsequent requests result in a conditional GET request to the application and if the stored response is unmodified, it is served from cache. Your backend should never generate the same response twice.
Vary support. This allows your applicatio to cache different responses for the same URI based on encoding, media-type, etc. This is crucial for REST since resources may support multiple representations.
We’ve also improved the handling of Accepts header, adding support for Content-Negotiation to meet the HTTP/1.1 specification. Waves applications can now choose the best representation of a resource based on the client-supplied preferences for media type, languages and character set. Ah, are you wondering how to deal with Content-Negotiation when your client is a browsers?? Ok, we thought about that, and we decide to expose the extension of the URI for such situation.
So, what’s coming next? Expect to see soon other news from other members of the team, as well as how-to type docs related to the new features. What’s brewing between the cubicles: management and monitoring support using Rinda, PoolParty integration, memoization support in functor to speed request matching, Hoshi and Cssy integration. Enough to keep an eye on.