diff --git a/lib/health_check/utils.rb b/lib/health_check/utils.rb
index <HASH>..<HASH> 100644
--- a/lib/health_check/utils.rb
+++ b/lib/health_check/utils.rb
@@ -164,8 +164,26 @@ module HealthCheck
     end
 
     def self.check_cache
-      Rails.cache.write('__health_check_cache_test__', 'ok', :expires_in => 1.second)
-      Rails.cache.read('__health_check_cache_test__') == 'ok' ? '' : 'Unable to write to cache. '
+      t = Time.now.to_i
+      value = "ok #{t}"
+      ret = Rails.cache.read('__health_check_cache_test__')
+      if ret.to_s =~ /^ok (\d+)$/ 
+        diff = ($1.to_i - t).abs
+        return('Cache expiry is broken. ') if diff > 30
+      elsif ret
+        return 'Cache is returning garbage. '
+      end
+      if Rails.cache.write('__health_check_cache_test__', value, :expires_in => 2.seconds)
+        ret = Rails.cache.read('__health_check_cache_test__')
+        if ret =~ /^ok (\d+)$/ 
+          diff = ($1.to_i - t).abs
+          (diff < 2 ? '' : 'Out of date cache or time is skewed. ')
+        else
+          'Unable to read from cache. '
+        end
+      else
+        'Unable to write to cache. '
+      end
     end
 
   end
Check cache is expiring values as asked and is returning fresh data