httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pque...@apache.org
Subject svn commit: r219945 - in /httpd/httpd/trunk: CHANGES modules/cache/mod_disk_cache.c
Date Wed, 20 Jul 2005 16:56:23 GMT
Author: pquerna
Date: Wed Jul 20 09:56:23 2005
New Revision: 219945

URL: http://svn.apache.org/viewcvs?rev=219945&view=rev
Log:
Quick hack to store varied contents under the same path, making it 
easier for admins to manage the cache.

Still requires modifications to htcacheclean to work.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/cache/mod_disk_cache.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/CHANGES?rev=219945&r1=219944&r2=219945&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Wed Jul 20 09:56:23 2005
@@ -2,6 +2,9 @@
 Changes with Apache 2.1.7
   [Remove entries to the current 2.0 section below, when backported]
 
+  *) mod_cache: Store varied contents all in the same prefix for a varied URI.
+     [Paul Querna]
+
   *) mod_cache: Run the CACHE_SAVE and CACHE_OUT Filters after other content
      filters. [Paul Querna]
 

Modified: httpd/httpd/trunk/modules/cache/mod_disk_cache.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/modules/cache/mod_disk_cache.c?rev=219945&r1=219944&r2=219945&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/cache/mod_disk_cache.c (original)
+++ httpd/httpd/trunk/modules/cache/mod_disk_cache.c Wed Jul 20 09:56:23 2005
@@ -50,8 +50,8 @@
  *   CRLF
  */
 
-#define VARY_FORMAT_VERSION 1
-#define DISK_FORMAT_VERSION 2
+#define VARY_FORMAT_VERSION 3
+#define DISK_FORMAT_VERSION 4
 
 typedef struct {
     /* Indicates the format of the header struct stored on-disk. */
@@ -76,6 +76,7 @@
 typedef struct disk_cache_object {
     const char *root;        /* the location of the cache directory */
     char *tempfile;    /* temp file tohold the content */
+    const char *prefix;
     const char *datafile;    /* name of file where the data will go */
     const char *hdrsfile;    /* name of file where the hdrs will go */
     const char *hashfile;    /* Computed hash key for this URI */
@@ -124,6 +125,8 @@
  */
 #define CACHE_HEADER_SUFFIX ".header"
 #define CACHE_DATA_SUFFIX   ".data"
+#define CACHE_VDIR_SUFFIX   ".vary"
+
 static char *header_file(apr_pool_t *p, disk_cache_conf *conf,
                          disk_cache_object_t *dobj, const char *name)
 {
@@ -131,8 +134,15 @@
         dobj->hashfile = ap_cache_generate_name(p, conf->dirlevels, 
                                                 conf->dirlength, name);
     }
-    return apr_pstrcat(p, conf->cache_root, "/", dobj->hashfile,
-                       CACHE_HEADER_SUFFIX, NULL);
+
+    if (dobj->prefix) {
+        return apr_pstrcat(p, dobj->prefix, CACHE_VDIR_SUFFIX, "/",
+                           dobj->hashfile, CACHE_HEADER_SUFFIX, NULL);
+     }
+     else {
+        return apr_pstrcat(p, conf->cache_root, "/", dobj->hashfile,
+                           CACHE_HEADER_SUFFIX, NULL);
+     }
 }
 
 static char *data_file(apr_pool_t *p, disk_cache_conf *conf,
@@ -142,8 +152,15 @@
         dobj->hashfile = ap_cache_generate_name(p, conf->dirlevels, 
                                                 conf->dirlength, name);
     }
-    return apr_pstrcat(p, conf->cache_root, "/", dobj->hashfile,
-                       CACHE_DATA_SUFFIX, NULL);
+
+    if (dobj->prefix) {
+        return apr_pstrcat(p, dobj->prefix, CACHE_VDIR_SUFFIX, "/",
+                           dobj->hashfile, CACHE_DATA_SUFFIX, NULL);
+     }
+     else {
+        return apr_pstrcat(p, conf->cache_root, "/", dobj->hashfile,
+                           CACHE_DATA_SUFFIX, NULL);
+     }
 }
 
 static void mkdir_structure(disk_cache_conf *conf, const char *file, apr_pool_t *pool)
@@ -352,6 +369,7 @@
     obj->key = apr_pstrdup(r->pool, key);
 
     dobj->name = obj->key;
+    dobj->prefix = NULL;
     dobj->datafile = data_file(r->pool, conf, dobj, key);
     dobj->hdrsfile = header_file(r->pool, conf, dobj, key);
     dobj->tempfile = apr_pstrcat(r->pool, conf->cache_root, AP_TEMPFILE, NULL);
@@ -393,6 +411,8 @@
     info = &(obj->info);
 
     /* Open the headers file */
+    dobj->prefix = NULL;
+
     dobj->hdrsfile = header_file(r->pool, conf, dobj, key);
     flags = APR_READ|APR_BINARY|APR_BUFFERED;
     rc = apr_file_open(&dobj->hfd, dobj->hdrsfile, flags, 0, r->pool);
@@ -428,6 +448,7 @@
         nkey = regen_key(r->pool, r->headers_in, varray, key);
 
         dobj->hashfile = NULL;
+        dobj->prefix = dobj->hdrsfile;
         dobj->hdrsfile = header_file(r->pool, conf, dobj, nkey);
 
         flags = APR_READ|APR_BINARY|APR_BUFFERED;
@@ -784,6 +805,7 @@
 
             dobj->tempfile = apr_pstrcat(r->pool, conf->cache_root, AP_TEMPFILE,
NULL);
             tmp = regen_key(r->pool, r->headers_in, varray, dobj->name);
+            dobj->prefix = dobj->hdrsfile;
             dobj->hashfile = NULL;
             dobj->datafile = data_file(r->pool, conf, dobj, tmp);
             dobj->hdrsfile = header_file(r->pool, conf, dobj, tmp);



Mime
View raw message