Elegent methods for caching search results from RESTful service?

Posted by Paul on Stack Overflow See other posts from Stack Overflow or by Paul
Published on 2010-06-16T18:11:15Z Indexed on 2010/06/16 18:32 UTC
Read the original article Hit count: 155

Filed under:
|
|
|

I have a RESTful web service which I access from the browser using JavaScript. As an example, say that this web service returns a list of all the Message resources assigned to me when I send a GET request to /messages/me. For performance reasons, I'd like to cache this response so that I don't have to re-fetch it every time I visit my Manage Messages web page. The cached response would expire after 5 minutes.

If a Message resource is created "behind my back", say by the system admin, it's possible that I won't know about it for up to 5 minutes, until the cached search response expires and is re-fetched. This is acceptable, because it creates no confusion for me.

However if I create a new Message resource which I know should be part of the search response, it becomes confusing when it doesn't appear on my Manage Messages page immediately. In general, when I knowingly create/delete/update a resource that invalidates a cached search response, I need that cached response to be expired/flushed immediately.

The core problem which I can't figure out:

I see no simple way of connecting the task of creating/deleting/updating a resource with the task of expiring the appropriate cached responses. In this example it seems simple, I could manually expire the cached search response whenever I create/delete/update a(ny) Message resource. But in a more complex system, keeping track of which search responses to expire under what circumstances will get clumsy quickly.

If someone could suggest a simple solution or some clarifying thoughts, I'd appreciate it.

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about search