Puncte:1

RewriteRule cu steag [L] oprind stocarea în cache?

drapel cn

Folosesc software-ul de gestionare a serverelor plesk cu apache și nginx. Am setat în apache și nginx un antet expirat pentru fișierele javascript timp de un an. Asta merge.Pot vedea un an pentru „expire” în antet.

Acum vreau să accesez fișierele javascript și php cu o rescriere (fără redirecționare).

APACHE

ExpirăActiv pe
ExpiresByType text/javascript A31556952

RewriteEngine Pornit
RewriteRule fals/(.+\.(?:js|php))$ original/$1 [L]

NGINX

locație ~* ^/(.*\.js)$ {
    try_files $uri @fallback;

    expiră 1 an;
    add_header Cache-Control „public”;
}

Acel RewriteRule funcționează. Pot accesa aceste fișiere, dar antetul „expires” din „fake/file.js” a dispărut. ce fac greșit?

example.com/original/file.js = expiră într-un an

example.com/fake/file.js = nu există antet pentru expirări

SOLUŢIE Toate fișierele statice sunt în mod normal procesate de NGINX, nu de apache. Deci setați în apache această linie pentru javascript, dă-i un cache.

Set antet Cache-Control „max-age=31556952, public”

Indicatorul [L] din RewriteRule trebuie să oprească procesarea fișierelor statice de către nginx și ExpiresByType este ignorat.

drapel kz
Cum setați mai exact antetul „Expirare”? Unde folosești aceste directive? Ce alte directive mai ai? „în apache ** și ** nginx” - cum se încadrează Nginx în asta? (Deoparte: toate browserele moderne folosesc antetul `Cache-Control` + `max-age` peste antetul `Expires`.)
drapel cn
Mulțumesc, mi-am editat întrebarea. Cache-Control funcționează, dar de ce nu ExpiresByType și de ce fișierele statice nu sunt procesate de nginx deloc?
Puncte:1
drapel kz

de ce fișierele statice nu sunt procesate de nginx deloc?

pentru că /fake/file.js nu mai este un „fișier static” (nu există), deci este transmis către Apache, unde este rescris intern pentru a obține răspunsul necesar.

ExpiresByType text/javascript A31556952

text/javascript este posibil să nu fie tipul mime „corect” pentru răspunsurile JavaScript serverul dvs. Trebuie să confirmați ce tip mime (de ex. Tipul de conținut antet) serverul dvs. trimite înapoi cu aceste răspunsuri, dar acest lucru ar fi în mod normal aplicație/javascript în schimb zilele astea. Cu alte cuvinte:

ExpiresByType application/javascript A31556952

Pentru a clarifica, mod_expires ExpiresByType setează atât Expiră și Cache-Control: vârsta maximă Antete de răspuns HTTP. Cache-Control: vârsta maximă are prioritate pe toate browserele moderne. Expiră este într-adevăr doar pentru suport moștenire.

Indicatorul [L] din RewriteRule trebuie să oprească procesarea fișierelor statice de către nginx

The L flag oprește pur și simplu trecerea curentă a motorului de rescriere pe Apache. Aceste directive în sine nu influențează Nginx (care ar părea să acționeze ca un proxy front-end).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.