I'm using a very simple outputcache directive on an ASP.NET 4.0 Webforms application (IIS 7.5), that caches pages for 1 hour. The application is not under any memory pressure, yet pages expire well before one hour. I created a test page that simply writes out DateTime.Now to confirm the behavior.
It does appear that as long as I continue to refresh the page it stays cached (mostly), but if I stop requesting it for a few minutes and return the datetime stamp changes. I've seen a few other people post similiar questions but no answers. I assume this has to do with some sort of configuration or optimization setting somewhere, where IIS that bumps seldom accessed pages from the cache earlier than the duration but I can't seem to find anything documented.
<%@ Page Language="C#" MasterPageFile="Default.Master" AutoEventWireup="true" Title="Test"%> <%@ OutputCache duration="3600" location="Any" varyByParam="*" %>
<%=DateTime.Now%>