diff --git a/apps/files/appinfo/app.php b/apps/files/appinfo/app.php
index 6535a9b7baa39023f8ed10278898aea778d8fd4e..703b1c7cb6cd3c235010c6707336f7f83dabfcde 100644
--- a/apps/files/appinfo/app.php
+++ b/apps/files/appinfo/app.php
@@ -12,3 +12,10 @@ OCP\App::addNavigationEntry( array( "id" => "files_index",
 									"name" => $l->t("Files") ));
 
 OC_Search::registerProvider('OC_Search_Provider_File');
+
+// cache hooks must be connected before all other apps.
+// since 'files' is always loaded first the hooks need to be connected here
+\OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Updater', 'writeHook');
+\OC_Hook::connect('OC_Filesystem', 'post_touch', '\OC\Files\Cache\Updater', 'touchHook');
+\OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook');
+\OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook');
\ No newline at end of file
diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php
index c8e62956f194866789494ca879f069007ff4984b..c0e9d215fb5ddc8d8c73f49665d6257f6de81db7 100644
--- a/lib/files/filesystem.php
+++ b/lib/files/filesystem.php
@@ -665,9 +665,4 @@ class Filesystem {
 	}
 }
 
-\OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Updater', 'writeHook');
-\OC_Hook::connect('OC_Filesystem', 'post_touch', '\OC\Files\Cache\Updater', 'touchHook');
-\OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook');
-\OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook');
-
 \OC_Util::setupFS();