diff --git a/filefield_paths.module b/filefield_paths.module
index 4787b1d..ad754ee 100644
--- a/filefield_paths.module
+++ b/filefield_paths.module
@@ -7,11 +7,30 @@
 /**
  * Include additional files.
  */
-foreach (module_list() as $module) {
-  if (file_exists($file = dirname(__FILE__) . "/modules/{$module}.inc")) {
-    require_once $file;
+// Get files to include from cache.
+$files = cache_get('filefield_paths_inc_modules');
+if (!empty($files->data)) {
+  $files = $files->data;
+}
+else {
+  $files = array();
+  // If not in the cache, get files from module list.
+  foreach (module_list() as $module) {
+    if (file_exists($file = drupal_get_path('module', 'filefield_paths') . '/modules/' . $module . '.inc')) {
+      $files[] = $file;
+    }
+  }
+  cache_set('filefield_paths_inc_modules', $files, 'cache', CACHE_TEMPORARY);
+}
+// Add in the files.
+foreach ($files as $file) {
+  if (!include_once $file) {
+    // Clear the cache if a file is missing.
+    cache_clear_all('filefield_paths_inc_modules');
   }
 }
+// Clean up because we are outside of a function call.
+unset($files, $file, $module);
 
 /**
  * Implements hook_theme().
