Vă mulțumim pentru susținere

Cum pot face ca browserul să vadă modificările CSS și Javascript?

Fișierele CSS și Javascript nu se schimbă prea des, așa că vreau ca acestea să fie stocate în cache de browserul web. Dar, de asemenea, vreau ca browserul web să vadă modificările aduse acestor fișiere fără a cere utilizatorului să-și închidă memoria cache a browserului. De asemenea, doriți o soluție care să funcționeze bine cu un sistem de control al versiunii, cum ar fi Subversion.


Unele soluții pe care le-am văzut implică adăugarea unui număr de versiune la sfârșitul fișierului sub forma unui șir de interogare.

     

Ar putea utiliza numărul de revizuire SVN pentru a automatiza acest lucru pentru dvs.: Afișare ASP.NET SVN Number Revision

Puteți specifica modul în care includeți Revizuirea variabilă a unui alt fișier? Aceasta este în fișierul HTML pot include numărul de revizuire în URL-ul la fișierul CSS sau Javascript.

În cartea Subversion se afirmă despre revizuire: "Acest cuvânt cheie descrie ultima versiune cunoscută în care sa modificat acest fișier depozitul ".

Firefox permite de asemenea apăsarea CTRL + R pentru a reîncărca totul pe o anumită pagină.

Pentru a clarifica căut în căutarea unor soluții care să nu impună utilizatorului să facă nimic din partea lor.

0
adăugat editat

5 răspunsuri

Unele soluții pe care le-am văzut implică adăugarea unui număr de versiune la sfârșitul fișierului sub forma unui șir de interogare.


Ai putea utiliza numărul de revizuire SVN pentru a automatiza această pentru tine prin includerea cuvântului LastChangedRevision în fișierul dvs. html după unde v1 apare mai sus. De asemenea, trebuie să vă configurați magazia pentru a face acest lucru.

Sper că acest lucru clarifică în continuare răspunsul meu?

Firefox permite, de asemenea, apăsarea CTRL + R pentru a reîncărca totul pe o anumită pagină.

0
adăugat

Am constatat că dacă adăugați ultima dată marcajul temporal modificat al fișierului la sfârșitul adresei URL, browserul va solicita fișierele atunci când este modificat. De exemplu, în PHP:

function urlmtime($url) {
   $parsed_url = parse_url($url);
   $path = $parsed_url['path'];

   if ($path[0] == "/") {
       $filename = $_SERVER['DOCUMENT_ROOT'] . "/" . $path;
   } else {
       $filename = $path;
   }

   if (!file_exists($filename)) {
       // If not a file then use the current time
       $lastModified = date('YmdHis');
   } else {
       $lastModified = date('YmdHis', filemtime($filename));
   }

   if (strpos($url, '?') === false) {
       $url .= '?ts=' . $lastModified;
   } else {
       $url .= '&ts=' . $lastModified;
   }

   return $url;
}

function include_css($css_url, $media='all') {
   // According to Yahoo, using link allows for progressive 
   // rendering in IE where as @import url($css_url) does not
   echo '
'."\n";
}

function include_javascript($javascript_url) {
   echo '
'."\n";
}
0
adăugat
@benmsia, te-ai uitat la ce anteturi HTTP sunt returnate cand solicitati fisierul CSS?
adăugat autor grom
hi grom, am încercat această metodă. totuși, am aflat că odată ce includ parametru, browser-ul nu a stocat cache-ul în fișierul css. Încarcă fișierul css de fiecare dată când revizuiesc pagina fără să o cachez. Am detectat acest lucru prin păstrarea modificărilor în fișierul css pentru a vedea dacă fișierul css este stocat în cache de browser. Eu folosesc crom. Pot să știu cum să cacheze fișierul css în browser și să se încarce numai când se schimbă parametrul? Mersi.
adăugat autor davidlee

În opinia mea, este mai bine să faceți numărul versiunii parte a fișierului propriu-zis, de ex. myscript.1.2.3.js . Puteți seta serverul dvs. web să cacheze acest fișier pentru totdeauna, și doar adăugați un nou fișier js atunci când aveți o nouă versiune.

0
adăugat

De asemenea, mă întrebam cum să fac asta, când am găsit răspunsul lui Grom. Mulțumesc pentru cod.

M-am străduit să înțeleg cum ar fi trebuit să fie folosit codul. (Nu folosesc un sistem de control al versiunilor.) În rezumat, includeți marcajul temporal (ts) când apelați foaia de stil. Nu intenționați să schimbați adesea foaia de stil:


0
adăugat
?? funcția include_css va adăuga ultimul marcaj temporizat modificat pe fișier la sfârșitul adresei URL. Nu este necesar controlul versiunii.
adăugat autor grom

Când lansați o nouă versiune a bibliotecilor CSS sau JS, provoca următoarele:

  1. modificați numele fișierului pentru a include un șir de versiuni unice
  2. modificați fișierele HTML care fac trimitere la bibliotecă pentru a indica punctul fișierului versiune

(aceasta este de obicei o chestiune destul de simplă pentru un script de lansare)

Acum puteți seta Expresele pentru CSS / JS să fie ani în viitor. Ori de câte ori modificați conținutul, dacă referința HTML indică un URI nou, browserele nu vor mai folosi copia veche în memoria cache.

Acest lucru determină comportamentul de memorare cache dorit fără a cere nimic de la utilizator.

0
adăugat