diff --git a/admin_menu.api.php b/admin_menu.api.php
index 46646ae..9c1f65b 100644
--- a/admin_menu.api.php
+++ b/admin_menu.api.php
@@ -120,3 +120,19 @@ function hook_admin_menu_cache_info() {
   );
   return $caches;
 }
+
+/**
+ * Change the pattern used to generate the unique ID for a cached menu.
+ *
+ * @param string $cid
+ *   The ID key used to identify a cached admin menu in {cache_menu}. You should
+ *   probably append to this value, rather than replace, in your implementation.
+ *   Passed by reference.
+ *
+ * @see admin_menu_output()
+ */
+function hook_admin_menu_cache_cid_alter(&$cid) {
+  // Add the domain id used by Domain Access module to the cache $cid.
+  $domain = domain_get_domain();
+  $cid .= ':' . $domain['domain_id'];
+}
\ No newline at end of file
diff --git a/admin_menu.module b/admin_menu.module
index d03713d..bd1bda6 100644
--- a/admin_menu.module
+++ b/admin_menu.module
@@ -440,6 +440,7 @@ function admin_menu_output() {
 
   $cache_server_enabled = variable_get('admin_menu_cache_server', TRUE);
   $cid = 'admin_menu:' . $user->uid . ':' . session_id() . ':' . $language->language;
+  drupal_alter('admin_menu_cache_cid', $cid);
 
   // Try to load and output administration menu from server-side cache.
   // @todo Duplicates the page cache? Page cache ID contains the hash that is
