mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-31 19:10:37 +03:00 
			
		
		
		
	git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87273 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			351 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			351 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 | |
| <HTML>
 | |
|  <HEAD>
 | |
|   <TITLE>Apache module mod_expires</TITLE>
 | |
|  </HEAD>
 | |
| <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
 | |
|  <BODY
 | |
|   BGCOLOR="#FFFFFF"
 | |
|   TEXT="#000000"
 | |
|   LINK="#0000FF"
 | |
|   VLINK="#000080"
 | |
|   ALINK="#FF0000"
 | |
|  >
 | |
|   <!--#include virtual="header.html" -->
 | |
|   <H1 ALIGN="CENTER">Module mod_expires</H1>
 | |
|   <P>
 | |
|   This module provides for the generation of <CODE>Expires</CODE> HTTP
 | |
|   headers according to user-specified criteria.
 | |
|   </P>
 | |
| 
 | |
| <P><A
 | |
| HREF="module-dict.html#Status"
 | |
| REL="Help"
 | |
| ><STRONG>Status:</STRONG></A> Extension
 | |
| <BR>
 | |
| <A
 | |
| HREF="module-dict.html#SourceFile"
 | |
| REL="Help"
 | |
| ><STRONG>Source File:</STRONG></A> mod_expires.c
 | |
| <BR>
 | |
| <A
 | |
| HREF="module-dict.html#ModuleIdentifier"
 | |
| REL="Help"
 | |
| ><STRONG>Module Identifier:</STRONG></A> expires_module
 | |
| <BR>
 | |
| <A
 | |
| HREF="module-dict.html#Compatibility"
 | |
| REL="Help"
 | |
| ><STRONG>Compatibility:</STRONG></A> Available in Apache 1.2 and later.
 | |
| </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>
 | |
|   <ul>
 | |
|    <LI><A
 | |
|         HREF="#expiresactive"
 | |
|        >ExpiresActive</A>
 | |
|    </LI>
 | |
|    <LI><A
 | |
|         HREF="#expiresbytype"
 | |
|        >ExpiresByType</A>
 | |
|    </LI>
 | |
|    <LI><A
 | |
|         HREF="#expiresdefault"
 | |
|        >ExpiresDefault</A>
 | |
|    </LI>
 | |
|   </ul>
 | |
| 
 | |
|   <H2>
 | |
|    <A NAME="AltSyn">Alternate Interval Syntax</A>
 | |
|   </H2>
 | |
|   <P>
 | |
|   The 
 | |
|   <A
 | |
|    HREF="#expiresdefault"
 | |
|   ><SAMP>ExpiresDefault</SAMP></A>
 | |
|   and
 | |
|   <A
 | |
|    HREF="#expiresbytype"
 | |
|   ><SAMP>ExpiresByType</SAMP></A>
 | |
|   directives can also be defined in a more readable syntax of the form:
 | |
|   </P>
 | |
|   <DL>
 | |
|    <DD><CODE>ExpiresDefault "<base> [plus] {<num> <type>}*"
 | |
|     <BR>
 | |
|     ExpiresByType type/encoding "<base> [plus]
 | |
|       {<num> <type>}*"</CODE>
 | |
|    </DD>
 | |
|   </DL>
 | |
|   <P>
 | |
|   where <base> is one of:
 | |
|   </P>
 | |
|   <MENU>
 | |
|    <LI><SAMP>access</SAMP>  
 | |
|    </LI>
 | |
|    <LI><SAMP>now</SAMP> (equivalent to '<SAMP>access</SAMP>')
 | |
|    </LI>
 | |
|    <LI><SAMP>modification</SAMP>
 | |
|    </LI>
 | |
|   </MENU>
 | |
|   <P>
 | |
|   The '<SAMP>plus</SAMP>' keyword is optional.  <num> should be an
 | |
|   integer value [acceptable to <SAMP>atoi()</SAMP>], and <type>
 | |
|   is one of:
 | |
|   </P>
 | |
|   <MENU>
 | |
|    <LI><SAMP>years</SAMP>
 | |
|    </LI>
 | |
|    <LI><SAMP>months</SAMP>
 | |
|    </LI>
 | |
|    <LI><SAMP>weeks</SAMP>
 | |
|    </LI>
 | |
|    <LI><SAMP>days</SAMP>
 | |
|    </LI>
 | |
|    <LI><SAMP>hours</SAMP>
 | |
|    </LI>
 | |
|    <LI><SAMP>minutes</SAMP>
 | |
|    </LI>
 | |
|    <LI><SAMP>seconds</SAMP>
 | |
|    </LI>
 | |
|   </MENU>
 | |
|   <P>
 | |
|   For example, any of the following directives can be used to make
 | |
|   documents expire 1 month after being accessed, by default:
 | |
|   </P>
 | |
|   <DL>
 | |
|    <DD><CODE>ExpiresDefault "access plus 1 month"
 | |
|     <BR>
 | |
|     ExpiresDefault "access plus 4 weeks"
 | |
|     <BR>
 | |
|     ExpiresDefault "access plus 30 days"</CODE>
 | |
|    </DD>
 | |
|   </DL>
 | |
|   <P>
 | |
|   The expiry time can be fine-tuned by adding several '<num>
 | |
|   <type>' clauses:
 | |
|   </P>
 | |
|   <DL>
 | |
|    <DD><CODE>ExpiresByType text/html "access plus 1 month 15 days 2 hours"
 | |
|     <BR>
 | |
|     ExpiresByType image/gif "modification plus 5 hours 3 minutes"</CODE>
 | |
|    </DD>
 | |
|   </DL>
 | |
|   <P>
 | |
|   Note that if you use a modification date based setting, the Expires
 | |
|   header will <STRONG>not</STRONG> be added to content that does
 | |
|   not come from a file on disk.  This is due to the fact that there is
 | |
|   no modification time for such content.
 | |
| 
 | |
|   <HR>
 | |
|   <H2><A NAME="expiresactive">
 | |
|    ExpiresActive directive
 | |
|   </A></H2>
 | |
|   <!--%plaintext <?INDEX {\tt ExpiresActive} directive> -->
 | |
|   <P>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Syntax"
 | |
|    REL="Help"
 | |
|   ><STRONG>Syntax:</STRONG></A> ExpiresActive on|off
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Context"
 | |
|    REL="Help"
 | |
|   ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
 | |
|   .htaccess
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Override"
 | |
|    REL="Help"
 | |
|   ><STRONG>Override:</STRONG></A> Indexes
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Status"
 | |
|    REL="Help"
 | |
|   ><STRONG>Status:</STRONG></A> Extension
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Module"
 | |
|    REL="Help"
 | |
|   ><STRONG>Module:</STRONG></A> 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>
 | |
|   <H2><A NAME="expiresbytype">
 | |
|    ExpiresByType directive
 | |
|   </A></H2>
 | |
|   <!--%plaintext <?INDEX {\tt ExpiresByType} directive> -->
 | |
|   <P>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Syntax"
 | |
|    REL="Help"
 | |
|   ><STRONG>Syntax:</STRONG></A> ExpiresByType <EM>MIME-type
 | |
|   <code>seconds</EM>
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Context"
 | |
|    REL="Help"
 | |
|   ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
 | |
|   .htaccess
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Override"
 | |
|    REL="Help"
 | |
|   ><STRONG>Override:</STRONG></A> Indexes
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Status"
 | |
|    REL="Help"
 | |
|   ><STRONG>Status:</STRONG></A> Extension
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Module"
 | |
|    REL="Help"
 | |
|   ><STRONG>Module:</STRONG></A> 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>
 | |
|   <P>
 | |
|   You can also specify the expiration time calculation using an
 | |
|   <A
 | |
|    HREF="#AltSyn"
 | |
|   >alternate syntax</A>,
 | |
|   described later in this document.
 | |
|   </P>
 | |
|   <HR>
 | |
|   <H2><A NAME="expiresdefault">
 | |
|    ExpiresDefault directive
 | |
|   </A></H2>
 | |
|   <!--%plaintext <?INDEX {\tt ExpiresDefault} directive> -->
 | |
|   <P>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Syntax"
 | |
|    REL="Help"
 | |
|   ><STRONG>Syntax:</STRONG></A> ExpiresDefault <EM><code>seconds</EM>
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Context"
 | |
|    REL="Help"
 | |
|   ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
 | |
|   .htaccess
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Override"
 | |
|    REL="Help"
 | |
|   ><STRONG>Override:</STRONG></A> Indexes
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Status"
 | |
|    REL="Help"
 | |
|   ><STRONG>Status:</STRONG></A> Extension
 | |
|   <BR>
 | |
|   <A
 | |
|    HREF="directive-dict.html#Module"
 | |
|    REL="Help"
 | |
|   ><STRONG>Module:</STRONG></A> 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, and the
 | |
|   <A
 | |
|    HREF="#AltSyn"
 | |
|   >alternate syntax</A>
 | |
|   description as well.
 | |
|   </P>
 | |
| 
 | |
|   <!--#include virtual="footer.html" -->
 | |
|  </BODY>
 | |
| </HTML>
 |