Index: binary-improvements2/7dtd-server-fixes/src/FileCache/AbstractCache.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/FileCache/AbstractCache.cs	(revision 391)
+++ binary-improvements2/7dtd-server-fixes/src/FileCache/AbstractCache.cs	(revision 392)
@@ -1,5 +1,26 @@
+using System.Collections.Generic;
+
 namespace AllocsFixes.FileCache {
 	public abstract class AbstractCache {
 		public abstract byte[] GetFileContent (string _filename);
+		public abstract (int, int) Invalidate ();
+
+		protected AbstractCache () {
+			caches.Add (this);
+		}
+
+		private static readonly List<AbstractCache> caches = new List<AbstractCache> ();
+		public static (int, int) InvalidateAllCaches () {
+			int filesDropped = 0;
+			int bytesDropped = 0;
+			
+			foreach (AbstractCache cache in caches) {
+				(int, int) returned = cache.Invalidate ();
+				filesDropped += returned.Item1;
+				bytesDropped += returned.Item2;
+			}
+
+			return (filesDropped, bytesDropped);
+		}
 	}
 }
Index: binary-improvements2/7dtd-server-fixes/src/FileCache/DirectAccess.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/FileCache/DirectAccess.cs	(revision 391)
+++ binary-improvements2/7dtd-server-fixes/src/FileCache/DirectAccess.cs	(revision 392)
@@ -14,4 +14,8 @@
 			return null;
 		}
+
+		public override (int, int) Invalidate () {
+			return (0, 0);
+		}
 	}
 }
Index: binary-improvements2/7dtd-server-fixes/src/FileCache/MapTileCache.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/FileCache/MapTileCache.cs	(revision 391)
+++ binary-improvements2/7dtd-server-fixes/src/FileCache/MapTileCache.cs	(revision 392)
@@ -114,4 +114,8 @@
 		}
 
+		public override (int, int) Invalidate () {
+			return (0, 0);
+		}
+
 		private static byte[] ReadAllBytes (string _path) {
 			using (FileStream fileStream = new FileStream(_path, FileMode.Open, FileAccess.Read, FileShare.Read, 4096)) {
Index: binary-improvements2/7dtd-server-fixes/src/FileCache/SimpleCache.cs
===================================================================
--- binary-improvements2/7dtd-server-fixes/src/FileCache/SimpleCache.cs	(revision 391)
+++ binary-improvements2/7dtd-server-fixes/src/FileCache/SimpleCache.cs	(revision 392)
@@ -29,4 +29,19 @@
 			return null;
 		}
+
+		public override (int, int) Invalidate () {
+			(int, int) result = (0, 0);
+			
+			lock (fileCache) {
+				result.Item1 = fileCache.Count;
+				foreach ((string _, byte[] data) in fileCache) {
+					result.Item2 += data.Length;
+				}
+				
+				fileCache.Clear ();
+			}
+
+			return result;
+		}
 	}
 }
