Skip to main content

4.9.3. Caching and Application Semantics

4.9.3. Caching and Application Semantics

When designing an application that uses HTTP, it's important to consider how caching interacts with the application's semantics.

For example, if an application defines a resource that represents a list of items, and items can be added or removed, the application needs to consider:

  • How long should a cached list be considered fresh?

  • What happens if a client makes a decision based on a cached list that's out of date?

  • Should the application use cache invalidation mechanisms to notify caches when the list changes?

Applications SHOULD design their resource representations and caching strategies to work well together. This might involve:

  • Choosing appropriate freshness lifetimes based on how often resources change.

  • Using conditional requests to allow efficient validation.

  • Providing cache invalidation mechanisms (e.g., using Cache-Control: no-cache for resources that change frequently).

  • Designing resources so that they're naturally cacheable (e.g., making resources immutable where possible).