mirror of
https://github.com/apache/httpd.git
synced 2025-11-06 16:49:32 +03:00
fix mod_disk_cache to support EnableSendfile.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@746541 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,6 +1,9 @@
|
|||||||
-*- coding: utf-8 -*-
|
-*- coding: utf-8 -*-
|
||||||
Changes with Apache 2.3.2
|
Changes with Apache 2.3.2
|
||||||
|
|
||||||
|
*) mod_disk_cache: The module now turns off sendfile support if
|
||||||
|
'EnableSendfile off' is defined globally. [Lars Eilebrecht]
|
||||||
|
|
||||||
*) mod_deflate: Adjust content metadata before bailing out on 304
|
*) mod_deflate: Adjust content metadata before bailing out on 304
|
||||||
responses so that the metadata does not differ from 200 response.
|
responses so that the metadata does not differ from 200 response.
|
||||||
[Roy T. Fielding]
|
[Roy T. Fielding]
|
||||||
|
|||||||
@@ -978,6 +978,12 @@ Dateien an den Client auszuliefern</td></tr>
|
|||||||
</span>
|
</span>
|
||||||
</Directory>
|
</Directory>
|
||||||
</code></p></div>
|
</code></p></div>
|
||||||
|
<p>Beachten Sie bitte, dass die verzeichnisbasierte und
|
||||||
|
.htaccess-Konfiguration von <code class="directive">EnableSendfile</code>
|
||||||
|
nicht vom <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code>-Modul unterst<73>tzt wird.
|
||||||
|
Nur die globale Konfiguration von <code class="directive">EnableSendfile</code>
|
||||||
|
wird vom Modul beachtet.
|
||||||
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
||||||
|
|||||||
@@ -939,6 +939,12 @@ Locations</a></li>
|
|||||||
</span>
|
</span>
|
||||||
</Directory>
|
</Directory>
|
||||||
</code></p></div>
|
</code></p></div>
|
||||||
|
<p>Please note that the per-directory and .htaccess configuration
|
||||||
|
of <code class="directive">EnableSendfile</code> is not supported by
|
||||||
|
<code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code>.
|
||||||
|
Only global definition of <code class="directive">EnableSendfile</code>
|
||||||
|
is taken into account by the module.
|
||||||
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
||||||
|
|||||||
@@ -900,6 +900,12 @@ Locations</a></seealso>
|
|||||||
</indent>
|
</indent>
|
||||||
</Directory>
|
</Directory>
|
||||||
</example>
|
</example>
|
||||||
|
<p>Please note that the per-directory and .htaccess configuration
|
||||||
|
of <directive>EnableSendfile</directive> is not supported by
|
||||||
|
<module>mod_disk_cache</module>.
|
||||||
|
Only global definition of <directive>EnableSendfile</directive>
|
||||||
|
is taken into account by the module.
|
||||||
|
</p>
|
||||||
</usage>
|
</usage>
|
||||||
</directivesynopsis>
|
</directivesynopsis>
|
||||||
|
|
||||||
|
|||||||
@@ -925,6 +925,12 @@ Dateien an den Client auszuliefern</description>
|
|||||||
</indent>
|
</indent>
|
||||||
</Directory>
|
</Directory>
|
||||||
</example>
|
</example>
|
||||||
|
<p>Beachten Sie bitte, dass die verzeichnisbasierte und
|
||||||
|
.htaccess-Konfiguration von <directive>EnableSendfile</directive>
|
||||||
|
nicht vom <module>mod_disk_cache</module>-Modul unterstützt wird.
|
||||||
|
Nur die globale Konfiguration von <directive>EnableSendfile</directive>
|
||||||
|
wird vom Modul beachtet.
|
||||||
|
</p>
|
||||||
</usage>
|
</usage>
|
||||||
</directivesynopsis>
|
</directivesynopsis>
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
<h3>Summary</h3>
|
<h3>Summary</h3>
|
||||||
|
|
||||||
<p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> implements a disk based storage
|
<p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> implements a disk based storage
|
||||||
manager. It is primarily of use in conjunction
|
manager. It is primarily of use in conjunction with
|
||||||
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>
|
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>
|
||||||
|
|
||||||
<p>Content is stored in and retrieved from the cache using URI based
|
<p>Content is stored in and retrieved from the cache using URI based
|
||||||
@@ -45,6 +45,16 @@
|
|||||||
<p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> requires the services of
|
<p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> requires the services of
|
||||||
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>
|
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="note"><h3>Note:</h3>
|
||||||
|
<p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> uses the sendfile feature to
|
||||||
|
serve files from the cache when supported by the platform, and
|
||||||
|
when enabled with <code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code>.
|
||||||
|
However, per-directory and .htaccess configuration of
|
||||||
|
<code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code> are ignored my
|
||||||
|
<code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> as the corresponding settings are not
|
||||||
|
available to the module when a request is being served from the
|
||||||
|
cache.</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="quickview"><h3 class="directives">Directives</h3>
|
<div id="quickview"><h3 class="directives">Directives</h3>
|
||||||
<ul id="toc">
|
<ul id="toc">
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<summary>
|
<summary>
|
||||||
<p><module>mod_disk_cache</module> implements a disk based storage
|
<p><module>mod_disk_cache</module> implements a disk based storage
|
||||||
manager. It is primarily of use in conjunction
|
manager. It is primarily of use in conjunction with
|
||||||
<module>mod_cache</module>.</p>
|
<module>mod_cache</module>.</p>
|
||||||
|
|
||||||
<p>Content is stored in and retrieved from the cache using URI based
|
<p>Content is stored in and retrieved from the cache using URI based
|
||||||
@@ -43,6 +43,16 @@
|
|||||||
<p><module>mod_disk_cache</module> requires the services of
|
<p><module>mod_disk_cache</module> requires the services of
|
||||||
<module>mod_cache</module>.</p>
|
<module>mod_cache</module>.</p>
|
||||||
</note>
|
</note>
|
||||||
|
<note><title>Note:</title>
|
||||||
|
<p><module>mod_disk_cache</module> uses the sendfile feature to
|
||||||
|
serve files from the cache when supported by the platform, and
|
||||||
|
when enabled with <directive module="core">EnableSendfile</directive>.
|
||||||
|
However, per-directory and .htaccess configuration of
|
||||||
|
<directive module="core">EnableSendfile</directive> are ignored my
|
||||||
|
<module>mod_disk_cache</module> as the corresponding settings are not
|
||||||
|
available to the module when a request is being served from the
|
||||||
|
cache.</p>
|
||||||
|
</note>
|
||||||
</summary>
|
</summary>
|
||||||
|
|
||||||
<directivesynopsis>
|
<directivesynopsis>
|
||||||
|
|||||||
11
modules/cache/mod_disk_cache.c
vendored
11
modules/cache/mod_disk_cache.c
vendored
@@ -376,6 +376,10 @@ static int open_entity(cache_handle_t *h, request_rec *r, const char *key)
|
|||||||
static int error_logged = 0;
|
static int error_logged = 0;
|
||||||
disk_cache_conf *conf = ap_get_module_config(r->server->module_config,
|
disk_cache_conf *conf = ap_get_module_config(r->server->module_config,
|
||||||
&disk_cache_module);
|
&disk_cache_module);
|
||||||
|
#ifdef APR_SENDFILE_ENABLED
|
||||||
|
core_dir_config *coreconf = ap_get_module_config(r->per_dir_config,
|
||||||
|
&core_module);
|
||||||
|
#endif
|
||||||
apr_finfo_t finfo;
|
apr_finfo_t finfo;
|
||||||
cache_object_t *obj;
|
cache_object_t *obj;
|
||||||
cache_info *info;
|
cache_info *info;
|
||||||
@@ -471,7 +475,12 @@ static int open_entity(cache_handle_t *h, request_rec *r, const char *key)
|
|||||||
/* Open the data file */
|
/* Open the data file */
|
||||||
flags = APR_READ|APR_BINARY;
|
flags = APR_READ|APR_BINARY;
|
||||||
#ifdef APR_SENDFILE_ENABLED
|
#ifdef APR_SENDFILE_ENABLED
|
||||||
flags |= APR_SENDFILE_ENABLED;
|
/* When we are in the quick handler we don't have the per-directory
|
||||||
|
* configuration, so this check only takes the globel setting of
|
||||||
|
* the EnableSendFile directive into account.
|
||||||
|
*/
|
||||||
|
flags |= ((coreconf->enable_sendfile == ENABLE_SENDFILE_OFF)
|
||||||
|
? 0 : APR_SENDFILE_ENABLED);
|
||||||
#endif
|
#endif
|
||||||
rc = apr_file_open(&dobj->fd, dobj->datafile, flags, 0, r->pool);
|
rc = apr_file_open(&dobj->fd, dobj->datafile, flags, 0, r->pool);
|
||||||
if (rc != APR_SUCCESS) {
|
if (rc != APR_SUCCESS) {
|
||||||
|
|||||||
Reference in New Issue
Block a user