Zum Inhalt springen

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.

- 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"
FeldTypBeschreibung
meta.serverRegistry-IDÜbergeordneter HTTP-Server
pathstringURL-Mount-Pfad (muss mit / beginnen)
fsRegistry-IDDateisystem-Eintrag zum Bereitstellen
directorystringUnterverzeichnis innerhalb des Dateisystems
static_options.spaboolSPA-Modus - Index für nicht gematchte Pfade bereitstellen
static_options.indexstringIndex-Datei (erforderlich wenn spa=true)
static_options.cachestringCache-Control-Header-Wert
middleware[]stringMiddleware-Kette
optionsmapMiddleware-Optionen (Punkt-Notation)
Statische Handler können auf jedem Pfad des Servers gemountet werden. Mehrere Handler können koexistieren - mounten Sie Assets auf /static und eine SPA auf /.

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

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
AnfrageResponse
/app.jsStellt app.js bereit (Datei existiert)
/users/123Stellt index.html bereit (SPA-Fallback)
/api/dataStellt index.html bereit (SPA-Fallback)
Wenn spa: true, ist die index-Datei erforderlich. Existierende Dateien werden direkt bereitgestellt; alle anderen Pfade geben die Index-Datei zurück.

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

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.

Pfad-Matching ist präfixbasiert. Ein Handler auf / fängt alle nicht gematchten Anfragen ab. Verwenden Sie Router für API-Endpunkte um Konflikte zu vermeiden.