try_files serve files autoindex nginx assets

serve - nginx static files



Caduque la memoria caché de activos en los navegadores al reemplazar el servidor de archivos de huellas dactilares a través de nginx (1)

Invalidar el caché mediante el cambio de URL de activos es una práctica normal.

Pero para que eso funcione, necesita que sus archivos html no se almacenen en la memoria caché para que el navegador tenga cierta información cuando estos nombres cambien.

Por lo tanto, ubicaciones separadas para html y activos. Matcher puede ser diferente, dependiendo de cómo los almacene, por ejemplo:

location / { try_files $uri $uri/ =404; gzip_static on; } location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; }

Estoy sirviendo una aplicación de JavaScript de una sola página a través de nginx y cuando implemente una nueva versión, quiero obligar a los navegadores a invalidar su caché JS y solicitar / usar la última versión disponible.

Entonces, por ejemplo, cuando reemplazo un archivo en la carpeta del servidor, llamado my-app-8e8faf9.js , con un archivo llamado my-app-eaea342.js , no deseo que los navegadores extraigan my-app-8e8faf9.js de su caché más. Pero cuando no hay una nueva versión disponible, quiero que sigan leyendo los activos de la memoria caché.

¿Cómo logro esto con la configuración nginx? Esta es mi configuración existente:

server { listen 80; server_name my.server.com; root /u/apps/my_client_production/current; index index.html; # ~2 seconds is often enough for most folks to parse HTML/CSS and # retrieve needed images/icons/frames, connections are cheap in # nginx so increasing this is generally safe... keepalive_timeout 10; client_max_body_size 100M; access_log /u/apps/my_client_production/shared/log/nginx.access.log; error_log /u/apps/my_client_production/shared/log/nginx.error.log info; location / { try_files $uri $uri/ =404; gzip_static on; expires max; add_header Cache-Control public; } # Error pages error_page 500 502 503 504 /500.html; }