httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Stoddard" <b...@wstoddard.com>
Subject [PATCH] mod_cache - lazy initialization port to 2.0
Date Tue, 17 Dec 2002 17:32:40 GMT
Vote in STATUS: mod_cache lazy initialization

This patch eliminates sconf and scache variables and defers initialization of
conf,
cache and cc_out till they are needed. Saves a few cycles for responses that
cannot
be cached.

I am interested in porting this to 2.0 just to keep mod_cache insync with 2.1

Bill

Index: mod_cache.c
===================================================================
RCS file: /home/cvs/httpd-2.0/modules/experimental/mod_cache.c,v
retrieving revision 1.64.2.2
diff -u -r1.64.2.2 mod_cache.c
--- mod_cache.c	17 Dec 2002 17:10:05 -0000	1.64.2.2
+++ mod_cache.c	17 Dec 2002 17:46:33 -0000
@@ -418,23 +418,16 @@
 {
     int rv;
     request_rec *r = f->r;
+    cache_request_rec *cache;
+    cache_server_conf *conf;
     char *url = r->unparsed_uri;
-    const char *cc_out = apr_table_get(r->headers_out, "Cache-Control");
+    const char *cc_out;
     const char *exps, *lastmods, *dates, *etag;
     apr_time_t exp, date, lastmod, now;
     apr_off_t size;
     cache_info *info;
-    void *sconf = r->server->module_config;
-    cache_server_conf *conf =
-        (cache_server_conf *) ap_get_module_config(sconf, &cache_module);
-    void *scache = r->request_config;
-    cache_request_rec *cache =
-        (cache_request_rec *) ap_get_module_config(scache, &cache_module);
-    apr_bucket *split_point = NULL;
-

-    ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, f->r->server,
-                 "cache: running CACHE_IN filter");
+    apr_bucket *split_point = NULL;

     /* check first whether running this filter has any point or not */
     if(r->no_cache) {
@@ -442,10 +435,11 @@
         return ap_pass_brigade(f->next, in);
     }

-    /* make space for the per request config
-     * We hit this code path when CACHE_IN has been installed by someone
-     * other than the cache handler
-     */
+    ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
+                 "cache: running CACHE_IN filter");
+
+    /* Setup cache_request_rec */
+    cache = (cache_request_rec *) ap_get_module_config(r->request_config,
&cache_module);
     if (!cache) {
         cache = apr_pcalloc(r->pool, sizeof(cache_request_rec));
         ap_set_module_config(r->request_config, &cache_module, cache);
@@ -516,8 +510,10 @@
             lastmod = APR_DATE_BAD;
         }

-        /* read the etag from the entity */
+        conf = (cache_server_conf *)
ap_get_module_config(r->server->module_config, &cache_module);
+        /* read the etag and cache-control from the entity */
         etag = apr_table_get(r->headers_out, "Etag");
+        cc_out = apr_table_get(r->headers_out, "Cache-Control");

         /*
          * what responses should we not cache?


Mime
View raw message