views:

40

answers:

2

The Cache-Control HTTP/1.1 header can specify max-age as well as whether the cache content can be public or private, indicating whether intermediate cache can cache the content.

For example, Ruby on Rails's expires_in() defaults to using Cache-Control: private

What is the risk of making it public? If it is public, which extra places can cache the content -- would it be a proxy server, for example?

What if the website is like Amazon.com, but the user is anonymous, then probably there is not much privacy issue? What if the user is logged in, could there be privacy issue, because the data passes through places and the data is visible. If that location wants to be "bad", it really doesn't need to care about the Cache-Control: private anyway.

What if it is a website where user can be logged in, but the website only search for health products like fish oil and vitamins, and so forth. In that case, there is even less privacy involved because it is unlike Amazon.com where there are a lot more variety of products such as books for which a user can really care more about privacy issue.

Having said that, what is the additional advantage of have Cache-Control: public?

+1  A: 

The problem with Cache-Control: Public is that the response may be cached and displayed to a different user. This is a problem if you have an authenticated application that is displaying private data. In general, you should only use public for static pages, or pages that return the same data no matter what user is making the request.

Mike
so it looks like even search results... or perhaps even static pages might not be good to be public, as 2 persons sharing the same computer may want privacy from each other about which webpage is cached. But I suppose also browsers should have a setting to make cache private no matter what the `Cache-Control` header says.
動靜能量
A: 

I further found the following spec:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1

public

Indicates that the response MAY be cached by any cache, even if it would normally be non-cacheable or cacheable only within a non- shared cache. (See also Authorization, section 14.8, for additional details.)

private

Indicates that all or part of the response message is intended for a single user and MUST NOT be cached by a shared cache. This allows an origin server to state that the specified parts of the response are intended for only one user and are not a valid response for requests by other users. A private (non-shared) cache MAY cache the response. Note: This usage of the word private only controls where the response may be cached, and cannot ensure the privacy of the message content.

So it looks like it is more about "shared cache" instead of intermediate cache.

動靜能量

related questions