| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>Apache module mod_expires</TITLE> |
| </HEAD> |
| <BODY> |
| <!--#include virtual="header.html" --> |
| <H1>Module mod_expires</H1> |
| <P> |
| This module is contained in the <CODE>mod_expires.c</CODE> file, and |
| is <STRONG>not</STRONG> compiled in by default. It provides for the |
| generation of <CODE>Expires</CODE> headers according to user-specified |
| criteria. |
| </P> |
| <H2>Summary</H2> |
| <P> |
| This module controls the setting of the <CODE>Expires</CODE> HTTP |
| header in server responses. The expiration date can set to be |
| relative to either the time the source file was last modified, or to |
| the time of the client access. |
| </P> |
| <P> |
| The <CODE>Expires</CODE> HTTP header is an instruction to the client |
| about the document's validity and persistence. If cached, the document |
| may be fetched from the cache rather than from the source until this |
| time has passed. After that, the cache copy is considered |
| "expired" and invalid, and a new copy must be obtained from |
| the source. |
| </P> |
| <H2>Directives</H2> |
| <P> |
| <MENU> |
| <LI><A |
| HREF="#expiresactive" |
| >ExpiresActive</A> |
| </LI> |
| <LI><A |
| HREF="#expiresbytype" |
| >ExpiresByType</A> |
| </LI> |
| <LI><A |
| HREF="#expiresdefault" |
| >ExpiresDefault</A> |
| </LI> |
| </MENU> |
| <HR> |
| <A NAME="expiresactive"> |
| <H2>ExpiresActive directive</H2> |
| </A> |
| <!--%plaintext <?INDEX {\tt ExpiresActive} directive> --> |
| <P> |
| <STRONG>Syntax:</STRONG> ExpiresActive <EM>boolean</EM> |
| <BR> |
| <STRONG>Context:</STRONG> server config, virtual host, directory, .htaccess |
| <br> |
| <STRONG>Override:</STRONG> Indexes |
| <br> |
| <STRONG>Status:</STRONG> Extension |
| <br> |
| <STRONG>Module:</STRONG> mod_expires |
| </P> |
| <P> |
| This directive enables or disables the generation of the |
| <CODE>Expires</CODE> header for the document realm in question. (That |
| is, if found in an <CODE>.htaccess</CODE> file, for instance, it |
| applies only to documents generated from that directory.) If set to |
| <EM><CODE>Off</CODE></EM>, no <CODE>Expires</CODE> header will be |
| generated for any document in the realm (unless overridden at a lower |
| level, such as an <CODE>.htaccess</CODE> file overriding a server |
| config file). If set to <EM><CODE>On</CODE></EM>, the header will be |
| added to served documents according to the criteria defined by the |
| <A |
| HREF="expiresbytype" |
| >ExpiresByType</A> |
| and |
| <A |
| HREF="#expiresdefault" |
| >ExpiresDefault</A> |
| directives (<EM>q.v.</EM>). |
| </P> |
| <P> |
| Note that this directive does not guarantee that an |
| <CODE>Expires</CODE> header will be generated. If the criteria aren't |
| met, no header will be sent, and the effect will be as though this |
| directive wasn't even specified. |
| </P> |
| <HR> |
| <A NAME="expiresbytype"> |
| <H2>ExpiresByType directive</H2> |
| </A> |
| <!--%plaintext <?INDEX {\tt ExpiresByType} directive> --> |
| <P> |
| <STRONG>Syntax:</STRONG> ExpiresByType <EM>mime-type <code>seconds</EM> |
| <BR> |
| <STRONG>Context:</STRONG> server config, virtual host, directory, .htaccess |
| <br> |
| <STRONG>Override:</STRONG> Indexes |
| <br> |
| <STRONG>Status:</STRONG> Extension |
| <br> |
| <STRONG>Module:</STRONG> mod_expires |
| </P> |
| <P> |
| This directive defines the value of the <CODE>Expires</CODE> header |
| generated for documents of the specified type (<EM>e.g.</EM>, |
| <CODE>text/html</CODE>). The second argument sets the number of |
| seconds that will be added to a base time to construct the expiration |
| date. |
| </P> |
| <P> |
| The base time is either the last modification time of the file, or the |
| time of the client's access to the document. Which should be used is |
| specified by the <CODE><EM><code></EM></CODE> field; |
| <STRONG>M</STRONG> means that the file's last modification time should |
| be used as the base time, and <STRONG>A</STRONG> means the client's |
| access time should be used. |
| </P> |
| <P> |
| The difference in effect is subtle. If <EM>M</EM> is used, all current |
| copies of the document in all caches will expire at the same time, |
| which can be good for something like a weekly notice that's always |
| found at the same URL. If <EM>A</EM> is used, the date of expiration |
| is different for each client; this can be good for image files that |
| don't change very often, particularly for a set of related documents |
| that all refer to the same images (<EM>i.e.</EM>, the images will be |
| accessed repeatedly within a relatively short timespan). |
| </P> |
| <P> |
| <STRONG>Example:</STRONG> |
| </P> |
| <P> |
| <PRE> |
| ExpiresActive On # enable expirations |
| ExpiresByType image/gif A2592000 # expire GIF images after a month |
| # in the client's cache |
| ExpiresByType text/html M604800 # HTML documents are good for a |
| # week from the time they were |
| # changed, period |
| </PRE> |
| </P> |
| <P> |
| Note that this directive only has effect if <CODE>ExpiresActive |
| On</CODE> has been specified. It overrides, for the specified MIME |
| type <EM>only</EM>, any expiration date set by the |
| <A |
| HREF="#expiresdefault" |
| >ExpiresDefault</A> |
| directive. |
| </P> |
| <HR> |
| <A NAME="expiresdefault"> |
| <H2>ExpiresDefault directive</H2> |
| </A> |
| <!--%plaintext <?INDEX {\tt ExpiresDefault} directive> --> |
| <P> |
| <STRONG>Syntax:</STRONG> ExpiresDefault <EM><code>seconds</EM> |
| <BR> |
| <STRONG>Context:</STRONG> server config, virtual host, directory, .htaccess |
| <br> |
| <STRONG>Override:</STRONG> Indexes |
| <br> |
| <STRONG>Status:</STRONG> Extension |
| <br> |
| <STRONG>Module:</STRONG> mod_expires |
| </P> |
| <P> |
| This directive sets the default algorithm for calculating the |
| expiration time for all documents in the affected realm. It can be |
| overridden on a type-by-type basis by the |
| <A |
| HREF="#expiresbytype" |
| >ExpiresByType</A> |
| directive. See the description of that directive for details about |
| the syntax of the argument. |
| </P> |
| <!--#include virtual="footer.html" --> |
| </BODY> |
| </HTML> |