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 -*-
|
||||
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
|
||||
responses so that the metadata does not differ from 200 response.
|
||||
[Roy T. Fielding]
|
||||
|
||||
@@ -978,6 +978,12 @@ Dateien an den Client auszuliefern</td></tr>
|
||||
</span>
|
||||
</Directory>
|
||||
</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 class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
||||
|
||||
@@ -939,6 +939,12 @@ Locations</a></li>
|
||||
</span>
|
||||
</Directory>
|
||||
</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 class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
||||
|
||||
@@ -900,6 +900,12 @@ Locations</a></seealso>
|
||||
</indent>
|
||||
</Directory>
|
||||
</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>
|
||||
</directivesynopsis>
|
||||
|
||||
|
||||
@@ -925,6 +925,12 @@ Dateien an den Client auszuliefern</description>
|
||||
</indent>
|
||||
</Directory>
|
||||
</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>
|
||||
</directivesynopsis>
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<h3>Summary</h3>
|
||||
|
||||
<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>
|
||||
|
||||
<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
|
||||
<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>
|
||||
</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 id="quickview"><h3 class="directives">Directives</h3>
|
||||
<ul id="toc">
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<summary>
|
||||
<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>
|
||||
|
||||
<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
|
||||
<module>mod_cache</module>.</p>
|
||||
</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>
|
||||
|
||||
<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;
|
||||
disk_cache_conf *conf = ap_get_module_config(r->server->module_config,
|
||||
&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;
|
||||
cache_object_t *obj;
|
||||
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 */
|
||||
flags = APR_READ|APR_BINARY;
|
||||
#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
|
||||
rc = apr_file_open(&dobj->fd, dobj->datafile, flags, 0, r->pool);
|
||||
if (rc != APR_SUCCESS) {
|
||||
|
||||
Reference in New Issue
Block a user