MapStaticAssets statt UseStaticFiles

MapStaticAssets statt UseStaticFiles

- Matt

Bisher reichte app.UseStaticFiles(), um Dateien aus wwwroot auszuliefern - eine Middleware, die bei jedem Request Datei, ETag und Content-Type neu bestimmt. Seit .NET 9 gibt es mit app.MapStaticAssets() eine Alternative, die auf Endpoint Routing statt Middleware setzt.

Der Unterschied liegt im Zeitpunkt der Arbeit: Assets werden beim Build erfasst, mit einem SHA-256-Hash fingerprinted und schon gzip-komprimiert, beim Publish zusätzlich mit Brotli. Der ETag ist gleich der Hash-Wert, fingerprinted Dateien bekommen Cache-Control: immutable - der Browser fragt danach gar nicht mehr nach. Bei Response Compression lief das noch alles zur Laufzeit.

Der Haken: MapStaticAssets kennt nur wwwroot. Verzeichnisse außerhalb des Web Root, Directory Browsing oder eigene Header über StaticFileOptions brauchen weiterhin UseStaticFiles, und ab etwa 1000 Assets lädt MapStaticAssets die komplette Metadaten-Tabelle eager in den Speicher - dann empfiehlt Microsoft, beide zu kombinieren.