mirror of
https://github.com/apache/httpd.git
synced 2025-05-17 15:21:13 +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>
|