diff --git a/includes/domain_views_plugin_cache_time.inc b/includes/domain_views_plugin_cache_time.inc
index aeb8bcf..ae297ff 100644
--- a/includes/domain_views_plugin_cache_time.inc
+++ b/includes/domain_views_plugin_cache_time.inc
@@ -30,8 +30,24 @@ class domain_views_plugin_cache_time extends views_plugin_cache_time {
     global $_domain;
 
     if (!isset($this->_results_key)) {
+      // The query data passed to $build_info is not a string, as Views
+      // expects. Since we are a node access module, the query data is still
+      // a raw query object, which we must inspect. Views includes a timestamp
+      // on the query which breaks cache key handling.
+      // See http://drupal.org/node/1705168
+      $args = array();
+      $build_info = $this->view->build_info;
+      foreach ($build_info as $key => $value) {
+        if ($value instanceof SelectQueryInterface && isset($value->alterMetaData['views_substitutions'])) {
+          foreach ($value->alterMetaData['views_substitutions'] as $key => $data) {
+            if ($key != '***CURRENT_TIME***') {
+              $args[$key] = $data;
+            }
+          }
+        }
+      }
       $key_data = array(
-        'build_info' => $this->view->build_info,
+        'build_info' => $args,
         'roles' => array_keys($user->roles),
         'super-user' => $user->uid == 1, // Special caching for super user.
         'language' => $GLOBALS['language'],
