- Replace blob: manifest (ignored by Chrome) with static manifest.json - Replace data: URL icon with real icon.svg file - Link manifest and apple-touch-icon directly in <head> - Remove blob/data URL generation from app.js Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
1.3 KiB
Nginx Configuration File
43 lines
1.3 KiB
Nginx Configuration File
server {
|
||
listen 80;
|
||
server_name _;
|
||
root /usr/share/nginx/html;
|
||
index index.html;
|
||
|
||
gzip on;
|
||
gzip_types text/css application/javascript application/json image/svg+xml;
|
||
gzip_min_length 1024;
|
||
|
||
# index.html – never cache so SW updates are picked up immediately
|
||
location = /index.html {
|
||
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||
}
|
||
|
||
# Static assets – long-term cache (cache busted by SW version)
|
||
location ~* \.(css|js)$ {
|
||
add_header Cache-Control "public, max-age=31536000, immutable";
|
||
}
|
||
|
||
# Service worker – no cache so browser always gets the latest version
|
||
location = /sw.js {
|
||
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||
add_header Service-Worker-Allowed "/";
|
||
}
|
||
|
||
# Runtime config – never cache so NAVIDROME_URL changes are picked up
|
||
location = /config.js {
|
||
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||
}
|
||
|
||
# Manifest – short cache so icon/name updates roll out quickly
|
||
location = /manifest.json {
|
||
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||
add_header Access-Control-Allow-Origin "*";
|
||
}
|
||
|
||
# SPA fallback
|
||
location / {
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
}
|