Routing och cachning
Hur en statisk webbapp besvarar förfrågningar — fallback för single-page-app, 404-sidan, cacheförvalen och deras exakta huvuden, omdirigeringar och svarshuvuden.
Alla dessa inställningar gäller utan att webbplatsen paketeras om: en ändring börjar gälla inom några sekunder.
Hur en förfrågan besvaras
Omdirigeringar kontrolleras före de här stegen.
- En sökväg som matchar en fil serverar filen; en sökväg som matchar en katalog serverar
katalogens
index.html. - Annars, när en fallback för single-page-app är satt, serveras fallback-filen med status 200.
- Annars blir svaret 404, med 404-sidan när en sådan är satt.
Förfrågningar efter resursfiler faller aldrig tillbaka: en saknad .js-, .css-, bild- eller
typsnittsfil ger 404 i stället för fallback-sidan. Resursfiler är de som slutar på .js, .mjs,
.css, .woff, .woff2, .ttf, .otf, .eot, .svg, .png, .jpg, .jpeg, .gif, .webp,
.avif, .ico eller .map.
Fallback för single-page-app
| Var | Inställning | Värden |
|---|---|---|
| Guiden för att skapa | Routing för single-page-app | På (standard) serverar /index.html; av ger 404 |
| Konfiguration → Routing | Fallback för single-page-app | En absolut sökväg som /index.html; tomt stänger av fallbacken |
| API, CLI | navigationFallback |
Samma som ovan |
| API, CLI | navigationFallbackExclude |
Sökvägar som fortsätter att ge 404 i stället för att falla tillbaka, till exempel /api/* |
404-sida
404-sida (notFoundPage) är en absolut sökväg som /404.html. Den serveras, med status 404,
för varje sökväg som inte matchar någon fil och inte faller tillbaka. Tomt serverar webbserverns
egen 404-sida.
Fallback-filen och 404-sidan måste finnas i den driftsatta webbplatsen. När en av dem saknas startar inte den ändrade routingen: webbplatsen behåller sin tidigare routing och visar Degraded.
Cacheförval
| Förval (API-värde) | Hashade resursfiler | Andra resursfiler | /index.html |
Allt annat |
|---|---|---|---|---|
Hashed assets (recommended) (HashedAssetsImmutable) |
public, max-age=31536000, immutable |
inget | no-cache |
inget |
Cache all assets (Aggressive) |
public, max-age=31536000, immutable |
public, max-age=31536000, immutable |
no-cache |
inget |
No cache headers (Off) |
inget | inget | inget | inget |
Värdena är huvudet Cache-Control; "inget" betyder att svaret saknar huvudet Cache-Control.
- En hashad resursfil har en hash på minst åtta bokstäver, siffror,
_eller-mellan två punkter direkt före filändelsen, somapp.4f3c2b1a.js. En hash som är fogad med bindestreck, som iindex-4f3c2b1a.js, räknas inte. max-age=31536000är ett år. Med Cache all assets behåller återkommande besökare en ohashad fil somlogo.pngi upp till ett år, även efter att du driftsatt en ny.no-cachefår webbläsare att fråga webbplatsen innan de återanvänder/index.html, så att en driftsättning syns direkt. Det gäller när/index.htmlbegärs direkt, för/, och när den serveras som fallback.
Andra regler
- Filer och kataloger vars namn börjar med en punkt nekas, utom under
/.well-known/. - Textsvar — HTML, CSS, JavaScript, JSON, XML, SVG, vanlig text — komprimeras med gzip.
- Vanlig HTTP omdirigeras till HTTPS.
Omdirigeringar och svarshuvuden
Portalen redigerar inte dessa; sätt dem via API:t eller med stsh swa update. De gäller utan ny
driftsättning, som resten av routingen.
redirects är en lista med regler. Ett from utan * matchar just den sökvägen och går före
alla andra regler. Bland regler med * gäller det längsta matchande prefixet, oavsett i vilken
ordning de står i listan.
| Fält | Betydelse |
|---|---|
from |
En absolut sökväg; en avslutande * matchar varje sökväg som börjar med den |
to |
En absolut sökväg eller en fullständig http://- eller https://-URL. Adresser som börjar med // avvisas |
statusCode |
301 (standard), 302, 307 eller 308 |
headers lägger till ett svarshuvud på matchande sökvägar.
| Fält | Betydelse |
|---|---|
path |
En absolut sökväg, där en avslutande * matchar ett prefix; /* (standard) matchar allt |
name |
Huvudets namn: bokstäver, siffror och - |
value |
Huvudets värde, på en rad |
Sökvägar får innehålla bokstäver, siffror och / . - _ ~ @ :; de får inte innehålla ... Två
omdirigeringar som matchar samma sökvägar avvisas.
En omdirigering med * fångar inte alla sökvägar under sitt prefix. Förfrågningar efter
resursfiler (filändelserna i Hur en förfrågan besvaras) serveras som filer, eller
ger 404, i stället för att omdirigeras medan Cache all assets eller en fallback för
single-page-app är satt. Med Hashed assets och ingen fallback gäller det bara hashade
resursfiler; andra resursfiler omdirigeras. Sökvägar med ett segment som börjar med en punkt nekas
i stället för att omdirigeras.
Se upp
Ett huvud vars
pathär något annat än/*skickas inte på sidorna under den sökvägen. Det skickas bara på resursfiler under sökvägen — alla medan Cache all assets eller en fallback för single-page-app är satt, bara hashade med Hashed assets och ingen fallback, inga med No cache headers och ingen fallback — och på svaren från omdirigeringar, fallback-filen, 404-sidan och/index.htmlnär deras egen sökväg matchar det. Ett huvud på/admin/*når till exempel inte/admin/index.htmleller någon annan sida där. Huvuden på/*skickas på alla svar utom under/.well-known/; använd/*för säkerhetshuvuden somX-Frame-OptionsellerContent-Security-Policy.
stsh swa update my-site -g my-resource-group \
--set 'redirects=[{"from":"/blog/*","to":"https://blog.example.com/","statusCode":301}]' \
--set 'headers=[{"path":"/*","name":"X-Frame-Options","value":"DENY"}]'