diff --git a/uc_store/includes/uc_price.inc b/uc_store/includes/uc_price.inc
index 2931de1..e8830dd 100644
--- a/uc_store/includes/uc_price.inc
+++ b/uc_store/includes/uc_price.inc
@@ -37,10 +37,6 @@
  *     any alteration/formatting/theming functions implemented. A list of accepted
  *     options follows.
  *
- *     'cache':
- *     Default: TRUE
- *     If set FALSE, this price won't be cached.
- *
  *     'sign':
  *     Default: variable_get('uc_currency_sign', '$')
  *     The sign to use when formatting this price.
@@ -63,12 +59,10 @@
  *
  *     'label':
  *     Default: TRUE
- *     If set to TRUE, the
- *
+ *     If set to TRUE, themed prices will include any prefixes and suffixes.
  */
 function uc_price($price_info, $context = array(), $options = array()) {
   global $user;
-  $values = array();
 
   // If we're passed just a number for price, we'll set the quantity to 1.
   if (is_numeric($price_info)) {
@@ -92,13 +86,21 @@ function uc_price($price_info, $context = array(), $options = array()) {
 
   // Clamp to allowed revisions.
   $revisions = array('original', 'altered', 'formatted-original', 'formatted', 'themed-original', 'themed');
-
   if (!in_array($context['revision'], $revisions)) {
     $context['revision'] = 'themed';
   }
 
+  // Calculate the original price.
+  $original = $price_info['price'] * $price_info['qty'];
+
+  // Exit early if the original price was requested.
+  if ($context['revision'] == 'original') {
+    return $original;
+  }
+
   // Get all the active handlers.
   $handlers = _uc_price_get_handlers($options);
+  $formatter = $handlers['formatter'];
 
   // Use the global user if none was passed in.
   if (!isset($context['account'])) {
@@ -108,64 +110,41 @@ function uc_price($price_info, $context = array(), $options = array()) {
   // Merge any incoming options, giving them precedence.
   $options += $handlers['options'];
 
-  if ($options['cache']) {
-    // Build the cache key with the original state, trimming down the account to
-    // an array with a limited set of keys that don't change every pageload; the
-    // uid, name, mail, and roles of the user account.
-    $context_clone = $context;
-    // TODO: array_intersect_key() isn't available until PHP 5.1.0. (Drupal 7)
-    //$context_clone['account'] = array_intersect_key((array) $context['account'], drupal_map_assoc(array()));
-    $context_clone['account'] = array(
-      'uid' => $context['account']->uid,
-      'name' => isset($context['account']->name) ? $context['account']->name : '',
-      'mail' => isset($context['account']->mail) ? $context['account']->mail : '',
-      'roles' => $context['account']->roles,
-    );
+  // Exit early if no alterations are needed.
+  switch ($context['revision']) {
+    case 'formatted-original':
+      return $formatter($original, $options);
 
-    $key = md5(serialize($price_info + $context_clone + $options));
+    case 'themed-original':
+      return theme('uc_price', $formatter($original, $options), $context, $options);
   }
 
-  // If this price has already been calculated and cached...
-  if ($options['cache'] && $cache = cache_get($key, 'cache_uc_price')) {
-    // Use the cached price data.
-    $values = $cache->data;
+  // Alter the price, context, and options.
+  foreach ($handlers['alterers'] as $alterer) {
+    $alterer($price_info, $context, $options);
   }
-  else {
-    // Otherwise, build it from scratch.
-    $values['original'] = $price_info['price'] * $price_info['qty'];
-
-    // Alter the price, context, and options.
-    foreach ($handlers['alterers'] as $alterer) {
-      $alterer($price_info, $context, $options);
-    }
+  $altered = $price_info['price'] * $price_info['qty'];
 
-    // If a price placeholder was specified in the price info array...
-    if (isset($price_info['placeholder'])) {
-      // Force the formatted value to the placeholder.
-      $values['formatted'] = $price_info['placeholder'];
-    }
-    else {
-      // Otherwise use the actual numeric and formatted numeric values.
-      $values['altered'] = $price_info['price'] * $price_info['qty'];
-
-      // Format the original and altered prices using the formatter callback.
-      $values['formatted-original'] = $handlers['formatter']($values['original'], $options);
-      $values['formatted'] = $handlers['formatter']($values['altered'], $options);
-    }
-
-    // Theme the price.
-    $values['themed-original'] = theme('uc_price', $values['formatted-original'], $context, $options);
-    $values['themed'] = theme('uc_price', $values['formatted'], $context, $options);
+  if ($context['revision'] == 'altered') {
+    return $altered;
+  }
 
-    // Cache this price values.
-    // TODO: Determine if we can safely cache these things...
-    if ($options['cache']) {
-      cache_set($key, $values, 'cache_uc_price', CACHE_TEMPORARY);
-    }
+  // Use a price placeholder if specified.
+  if (isset($price_info['placeholder'])) {
+    $formatted = $price_info['placeholder'];
+  }
+  else {
+    $formatted = $formatter($altered, $options);
   }
 
   // Return the requested revision.
-  return $values[$context['revision']];
+  switch ($context['revision']) {
+    case 'formatted':
+      return $formatted;
+
+    case 'themed':
+      return theme('uc_price', $formatted, $context, $options);
+  }
 }
 
 /**
@@ -241,7 +220,6 @@ function _uc_price_get_handlers($options = array()) {
       'dec' => variable_get('uc_currency_dec', '.'),
       'thou' => variable_get('uc_currency_thou', ','),
       'label' => TRUE,
-      'cache' => variable_get('uc_price_caching', TRUE),
     );
 
     foreach ($hooks as $hook) {
diff --git a/uc_store/uc_store.admin.inc b/uc_store/uc_store.admin.inc
index c7a529e..bf9a1f9 100644
--- a/uc_store/uc_store.admin.inc
+++ b/uc_store/uc_store.admin.inc
@@ -1209,13 +1209,6 @@ function uc_price_settings_form() {
     '#default_value' => variable_get('uc_price_format_callback', 'uc_store_price_handler_format'),
   );
 
-  $form['uc_price_caching'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Cache generated price values until the next cron run.'),
-    '#description' => t('It may be helpful to disable caching while configuring modules that alter prices or price displays.') .'<br />'. t("For high traffic sites or sites with multiple price alterers, leaving this disabled may hurt the site's performance."),
-    '#default_value' => variable_get('uc_price_caching', TRUE),
-  );
-
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save configuration'),
@@ -1265,9 +1258,8 @@ function theme_uc_price_settings_form($form) {
  * @see uc_price_settings_form()
  */
 function uc_price_settings_form_submit($form, &$form_state) {
-  // Save the selected price formatter and price caching setting.
+  // Save the selected price formatter.
   variable_set('uc_price_format_callback', $form_state['values']['uc_price_format_callback']);
-  variable_set('uc_price_caching', $form_state['values']['uc_price_caching']);
 
   // Save the alterer configuration based on the table form.
   $config = array();
@@ -1278,8 +1270,5 @@ function uc_price_settings_form_submit($form, &$form_state) {
 
   variable_set('uc_price_handler_config', $config);
 
-  // Empty out any cached price data.
-  cache_clear_all('*', 'cache_uc_price', TRUE);
-
   drupal_set_message(t('Price handler configuration saved.'));
 }
diff --git a/uc_store/uc_store.install b/uc_store/uc_store.install
index d2511ed..cf6ed08 100644
--- a/uc_store/uc_store.install
+++ b/uc_store/uc_store.install
@@ -111,9 +111,6 @@ function uc_store_schema() {
     'primary key' => array('path_hash'),
   );
 
-  $schema['cache_uc_price'] = drupal_get_schema_unprocessed('system', 'cache');
-  $schema['cache_uc_price']['description'] = 'Cache table for Ubercart store prices.';
-
   return $schema;
 }
 
@@ -173,14 +170,12 @@ function uc_store_update_6000() {
   return $ret;
 }
 
+/**
+ * Obsolete due to removal of price caching.
+ * @see uc_store_update_6006()
+ */
 function uc_store_update_6001() {
-  $ret = array();
-
-  $schema['cache_uc_price'] = drupal_get_schema_unprocessed('system', 'cache');
-  $schema['cache_uc_price']['description'] = t('Cache table for Ubercart store prices.');
-
-  db_create_table($ret, 'cache_uc_price', $schema['cache_uc_price']);
-  return $ret;
+  return array();
 }
 
 /**
@@ -245,3 +240,16 @@ function uc_store_update_6005() {
 
   return $ret;
 }
+
+/**
+ * Remove price cache.
+ */
+function uc_store_update_6006() {
+  if (db_table_exists('cache_uc_price')) {
+    db_drop_table('cache_uc_price');
+  }
+
+  variable_del('uc_price_caching');
+
+  return array(array('success' => TRUE, 'query' => 'Removed price cache.'));
+}
diff --git a/uc_store/uc_store.module b/uc_store/uc_store.module
index 728eb7b..89fd646 100644
--- a/uc_store/uc_store.module
+++ b/uc_store/uc_store.module
@@ -368,13 +368,6 @@ function uc_store_elements() {
 }
 
 /**
- * Implementation of hook_flush_caches().
- */
-function uc_store_flush_caches() {
-  return array('cache_uc_price');
-}
-
-/**
  * Implementation of hook_theme().
  */
 function uc_store_theme() {
