--- views-cache-modified/views_cache.inc	2007-07-14 12:12:02.000000000 -0700
+++ views/views_cache.inc	2008-02-05 11:58:01.000000000 -0800
@@ -69,11 +69,16 @@
   global $locale;
 
   if (!$views_tables) {
-    $data = cache_get("views_tables:$locale", 'cache_views');
-    $cache = unserialize($data->data);
-
-    if (is_array($cache)) {
-      $views_tables = $cache;
+    $tables = cache_get("views_tables_tables:$locale", 'cache_views');
+    $filters = cache_get("views_tables_filters:$locale", 'cache_views');
+    $fields = cache_get("views_tables_fields:$locale", 'cache_views');
+    $sorts = cache_get("views_tables_sorts:$locale", 'cache_views');
+    
+    if (is_array($tables) && is_array($filters) && is_array($fields) && is_array($sorts)) {
+      $views_tables['tables'] = unserialize($tables->data);
+      $views_tables['filters'] = unserialize($filters->data);
+      $views_tables['fields'] = unserialize($fields->data);
+      $views_tables['sorts'] = unserialize($sorts->data);
     }
     else {
       $table_data = module_invoke_all('views_tables');
@@ -143,7 +148,10 @@
           }
         }
       }
-      cache_set("views_tables:$locale", 'cache_views', serialize($views_tables));
+      cache_set("views_tables_tables:$locale", 'cache_views', serialize($views_tables['tables']));
+      cache_set("views_tables_filters:$locale", 'cache_views', serialize($views_tables['filters']));
+      cache_set("views_tables_fields:$locale", 'cache_views', serialize($views_tables['fields']));
+      cache_set("views_tables_sorts:$locale", 'cache_views', serialize($views_tables['sorts']));
     }
   }
   return ($full ? $views_tables : $views_tables['tables']);
