diff --git a/honeypot.admin.inc b/honeypot.admin.inc
index c7c67d2..c5e1214 100644
--- a/honeypot.admin.inc
+++ b/honeypot.admin.inc
@@ -42,7 +42,7 @@ function honeypot_admin_form($form) {
     $form['configuration']['honeypot_time_limit'] = array(
       '#type' => 'textfield',
       '#title' => t('Honeypot time limit'),
-      '#description' => t('Minimum time required before form should be considered entered by a human instead of a bot. Set to 0 to disable.'),
+      '#description' => t('Minimum time required before form should be considered entered by a human instead of a bot. Set to 0 to disable. <strong>Page caching will be disabled if there is a form protected by time limit on the page.</strong>'),
       '#default_value' => variable_get('honeypot_time_limit', 5),
       '#required' => TRUE,
       '#size' => 5,
diff --git a/honeypot.module b/honeypot.module
index 741a7c5..356407a 100644
--- a/honeypot.module
+++ b/honeypot.module
@@ -147,6 +147,17 @@ function honeypot_add_form_protection(&$form, &$form_state, $options = array())
       '#default_value' => time(),
       '#element_validate' => array('_honeypot_time_restriction_validate'),
     );
+
+    // Disable page caching to make sure timestamp isn't cached.
+    if (user_is_anonymous()) {
+      $GLOBALS['conf']['cache'] = CACHE_DISABLED;
+
+      // Pressflow in CACHE_EXTERNAL caching mode additionally requires marking
+      // this request as non-cacheable to bypass external caches (e.g., Varnish).
+      if (function_exists('drupal_page_is_cacheable')) {
+        drupal_set_header('Cache-Control', 'no-cache, must-revalidate, post-check=0, pre-check=0', FALSE);
+      }
+    }
   }
 }
 
