diff --git a/slate.module b/slate.module
index 8e80cfc..d8e3b02 100644
--- a/slate.module
+++ b/slate.module
@@ -173,10 +173,20 @@ function _slate_template_paths() {
  * Get template files.
  */
 function _slate_template_files() {
-  $files = array();
+  $files = &drupal_static(__FUNCTION__);
 
-  foreach (array('themes', 'modules') as $type) {
-    $files += drupal_system_listing('/\.html\.twig/', $type, 'name', 0);
+  if (!isset($files)) {
+    if ($cached = cache_get('slate_template_files')) {
+      $files = $cached->data;
+      return $files;
+    }
+
+    $files = array();
+    foreach (array('themes', 'modules') as $type) {
+      $files += drupal_system_listing('/\.html\.twig/', $type, 'name', 0);
+    }
+
+    cache_set('slate_template_files', $files);
   }
 
   return $files;
