Statische Dateien
Stellen Sie statische Dateien aus jedem Dateisystem mit http.static bereit. Statische Handler mounten direkt auf dem Server und können SPAs, Assets oder Benutzer-Uploads aus jedem Pfad bereitstellen.
Konfiguration
- name: static
kind: http.static
meta:
server: gateway
path: /
fs: app:public
directory: dist
static_options:
spa: true
index: index.html
cache: "public, max-age=3600"
| Feld | Typ | Beschreibung |
|---|---|---|
meta.server |
Registry-ID | Übergeordneter HTTP-Server |
path |
string | URL-Mount-Pfad (muss mit / beginnen) |
fs |
Registry-ID | Dateisystem-Eintrag zum Bereitstellen |
directory |
string | Unterverzeichnis innerhalb des Dateisystems |
static_options.spa |
bool | SPA-Modus - Index für nicht gematchte Pfade bereitstellen |
static_options.index |
string | Index-Datei (erforderlich wenn spa=true) |
static_options.cache |
string | Cache-Control-Header-Wert |
middleware |
[]string | Middleware-Kette |
options |
map | Middleware-Optionen (Punkt-Notation) |
/static und eine SPA auf /.
Dateisystem-Integration
Statische Dateien werden aus Dateisystem-Einträgen bereitgestellt. Jeder Dateisystemtyp funktioniert:
entries:
# Lokales Verzeichnis
- name: public
kind: fs.directory
directory: ./public
# Statischer Handler
- name: static
kind: http.static
meta:
server: gateway
path: /static
fs: public
Anfrage /static/css/style.css stellt ./public/css/style.css bereit.
Das directory-Feld wählt ein Unterverzeichnis innerhalb des Dateisystems aus:
- name: docs
kind: http.static
meta:
server: gateway
path: /docs
fs: app:content
directory: documentation/html
SPA-Modus
Single Page Applications benötigen, dass alle Routen dieselbe Index-Datei für clientseitiges Routing bereitstellen:
- name: spa
kind: http.static
meta:
server: gateway
path: /
fs: app:frontend
static_options:
spa: true
index: index.html
| Anfrage | Response |
|---|---|
/app.js |
Stellt app.js bereit (Datei existiert) |
/users/123 |
Stellt index.html bereit (SPA-Fallback) |
/api/data |
Stellt index.html bereit (SPA-Fallback) |
spa: true, ist die index-Datei erforderlich. Existierende Dateien werden direkt bereitgestellt; alle anderen Pfade geben die Index-Datei zurück.
Cache-Control
Setzen Sie angemessenes Caching für verschiedene Asset-Typen:
entries:
- name: app_fs
kind: fs.directory
directory: ./dist
# Versionierte Assets - für immer cachen
- name: assets
kind: http.static
meta:
server: gateway
path: /assets
fs: app_fs
directory: assets
static_options:
cache: "public, max-age=31536000, immutable"
# HTML - kurzer Cache, muss revalidiert werden
- name: app
kind: http.static
meta:
server: gateway
path: /
fs: app_fs
static_options:
spa: true
index: index.html
cache: "public, max-age=0, must-revalidate"
Gängige Cache-Muster:
- Versionierte Assets:
public, max-age=31536000, immutable - HTML/Index:
public, max-age=0, must-revalidate - Benutzer-Uploads:
private, max-age=3600
Middleware
Wenden Sie Middleware für Komprimierung, CORS oder andere Verarbeitung an:
- name: static
kind: http.static
meta:
server: gateway
path: /
fs: app:public
middleware:
- compress
- cors
options:
compress.level: "best"
cors.allow.origins: "*"
Middleware umhüllt den statischen Handler in Reihenfolge - Anfragen durchlaufen jede Middleware bevor sie den Datei-Server erreichen.
/ fängt alle nicht gematchten Anfragen ab. Verwenden Sie Router für API-Endpunkte um Konflikte zu vermeiden.
Siehe auch
- Server - HTTP-Server-Konfiguration
- Routing - Router und Endpunkte
- Dateisystem - Dateisystem-Modul
- Middleware - Verfügbare Middleware