diff --git a/uc_cart/uc_cart.module b/uc_cart/uc_cart.module
index 3729772..cafb401 100644
--- a/uc_cart/uc_cart.module
+++ b/uc_cart/uc_cart.module
@@ -272,12 +272,6 @@ function uc_cart_init() {
   $conf['i18n_variables'][] = 'uc_msg_order_new_user';
   $conf['i18n_variables'][] = 'uc_msg_order_new_user_logged_in';
   $conf['i18n_variables'][] = 'uc_msg_order_submit';
-
-  // Don't cache any cart of checkout pages.
-  // Code based on CacheExclude - http://drupal.org/project/cacheexclude
-  if (arg(0) == 'cart') {
-    $GLOBALS['conf']['cache'] = 0;
-  }
 }
 
 /**
@@ -300,6 +294,24 @@ function uc_cart_cron() {
 }
 
 /**
+ * Implements hook_exit().
+ *
+ * Code from CacheExclude - http://drupal.org/project/cacheexclude
+ */
+function uc_cart_exit() {
+  global $base_root;
+
+  $pages = array('cart', 'cart/checkout', 'cart/checkout/review', 'cart/checkout/complete');
+  $this_page = request_uri();
+  foreach ($pages as $page) {
+    if ($page && strstr($this_page, $page) !== FALSE) {
+      cache_clear_all($base_root . $this_page, 'cache_page');
+      return;
+    }
+  }
+}
+
+/**
  * Implements hook_nodeapi().
  */
 function uc_cart_nodeapi(&$node, $op, $arg3, $arg4) {
