On Drupal Performance Page, under the fieldset Cache you have two options. One is Minimum Cache Lifetime and the other is Expiration of cached pages.
What is the difference between these two.
I have made following observations after spending a few hours. If there are any gaps or mistakes, do let me know. I will be happy to make editions.
First observer that none of the Options under the CACHING are interdependent. If they were you would have seen them under different field sets(or as dependent fields). Make a note of this observation and we will revisit that later.
Let us begin with the first option Cache Pages for anonymous users.
When you check this option you are basically telling Drupal
Hey Beast listen, when an anonymous user visits my site,
Also even when you don't enable the
Cache Pages for anonymous users the page can still be cached by external cache systems. Eg : Boost
Now lets move to the next options which you would end up using generally.
Expiration of cached pages
The maximum time an external cache can use an
old version of a page. As Molot pointed out the keyword is
public and the max-age value in the header to the specified value(1 day in this case).
This header tells the
external Caching systems not to make a call
to the server for this page until the max age, as they can show this
page from their own cache. After the max-age the Caching system
should check back with the Drupal server to see if the content has
If its a Varnish server, it doesn't make a call to Apache and returns the page from its cache. So assume that Varnish has cached a page and thousand different users made a request to that page. So it means that 1000 requests have been processed without hitting the Apache Server even once.
Minimum Cache Life Time
If your site doesn't have a huge traffic or if you are not sure what this value is, it better to leave this value as none.
This article has a good rundown of the caching terminology of Drupal: http://www.phase2technology.com/blog/caching-in-drupal/
Summary of the relevant points:
Minimum cache lifetime is often misinterpreted as meaning "pages will be regenerated after this much time has passed". What it actually means is that pages will not be regenerated until at least this much time has passed and a cache clearing event has happened.
Expiration of cached pages is also sometimes misinterpreted. This value controls what is sent as a max-age value in a Cache-Control header and thus advises proxy servers how long they may serve the page without asking your Drupal install for a new copy. This does not mean that the page will be regenerated after this much time, it just means that the proxy server must check back with Drupal to see if a new version of the page exists after this much time. Drupal will only regenerate a page after a cache clearing event occurs.