diff --git a/xmlsitemap.module b/xmlsitemap.module
index 8106202..77d739a 100644
--- a/xmlsitemap.module
+++ b/xmlsitemap.module
@@ -206,6 +206,11 @@ function _xmlsitemap_rebuild_form_access() {
  * Implements hook_cron().
  */
 function xmlsitemap_cron() {
+  // If we were specifically told not to regenerate on cron, skip.
+  if (!xmlsitemap_var('regenerate_on_cron')) {
+    return;
+  }
+
   // If there were no new or changed links, skip.
   if (!variable_get('xmlsitemap_regenerate_needed', FALSE)) {
     return;
@@ -268,6 +273,8 @@ function xmlsitemap_variables() {
     'xmlsitemap_frontpage_changefreq' => XMLSITEMAP_FREQUENCY_DAILY,
     'xmlsitemap_lastmod_format' => XMLSITEMAP_LASTMOD_MEDIUM,
     'xmlsitemap_gz' => FALSE,
+    'xmlsitemap_regenerate_on_cron' => TRUE,
+    'xmlsitemap_index_links_on_cron' => TRUE,
     // Removed variables are set to NULL so they can still be deleted.
     'xmlsitemap_regenerate_last' => NULL,
     'xmlsitemap_custom_links' => NULL,
diff --git a/xmlsitemap_menu/xmlsitemap_menu.module b/xmlsitemap_menu/xmlsitemap_menu.module
index 86ec5ad..829625e 100644
--- a/xmlsitemap_menu/xmlsitemap_menu.module
+++ b/xmlsitemap_menu/xmlsitemap_menu.module
@@ -44,7 +44,9 @@ function xmlsitemap_menu_menu_link_uri($menu_item) {
  * Process old menu links not found in the {xmlsitemap} table.
  */
 function xmlsitemap_menu_cron() {
-  xmlsitemap_menu_xmlsitemap_index_links(xmlsitemap_var('batch_limit'));
+  if (xmlsitemap_var('index_links_on_cron')) {
+    xmlsitemap_menu_xmlsitemap_index_links(xmlsitemap_var('batch_limit'));
+  }
 }
 
 /**
diff --git a/xmlsitemap_node/xmlsitemap_node.module b/xmlsitemap_node/xmlsitemap_node.module
index 4a084cc..738c539 100644
--- a/xmlsitemap_node/xmlsitemap_node.module
+++ b/xmlsitemap_node/xmlsitemap_node.module
@@ -45,7 +45,9 @@ function xmlsitemap_node_uri($node) {
  * Process old nodes not found in the {xmlsitemap} table.
  */
 function xmlsitemap_node_cron() {
-  xmlsitemap_node_xmlsitemap_index_links(xmlsitemap_var('batch_limit'));
+  if (xmlsitemap_var('index_links_on_cron')) {
+    xmlsitemap_node_xmlsitemap_index_links(xmlsitemap_var('batch_limit'));
+  }
 }
 
 /**
diff --git a/xmlsitemap_taxonomy/xmlsitemap_taxonomy.module b/xmlsitemap_taxonomy/xmlsitemap_taxonomy.module
index 59f8699..6367ff5 100644
--- a/xmlsitemap_taxonomy/xmlsitemap_taxonomy.module
+++ b/xmlsitemap_taxonomy/xmlsitemap_taxonomy.module
@@ -45,7 +45,9 @@ function xmlsitemap_taxonomy_term_uri($term) {
  * Process old taxonomy terms not found in the {xmlsitemap} table.
  */
 function xmlsitemap_taxonomy_cron() {
-  xmlsitemap_taxonomy_xmlsitemap_index_links(xmlsitemap_var('batch_limit'));
+  if (xmlsitemap_var('index_links_on_cron')) {
+    xmlsitemap_taxonomy_xmlsitemap_index_links(xmlsitemap_var('batch_limit'));
+  }
 }
 
 /**
diff --git a/xmlsitemap_user/xmlsitemap_user.module b/xmlsitemap_user/xmlsitemap_user.module
index 8d83015..3ef0eac 100644
--- a/xmlsitemap_user/xmlsitemap_user.module
+++ b/xmlsitemap_user/xmlsitemap_user.module
@@ -44,7 +44,9 @@ function xmlsitemap_user_uri($account) {
  * Process old users not found in the {xmlsitemap} table.
  */
 function xmlsitemap_user_cron() {
-  xmlsitemap_user_xmlsitemap_index_links(xmlsitemap_var('batch_limit'));
+  if (xmlsitemap_var('index_links_on_cron')) {
+    xmlsitemap_user_xmlsitemap_index_links(xmlsitemap_var('batch_limit'));
+  }
 }
 
 /**
