Jak mohu provést prohlížeč vidět CSS a JavaScript změny?

hlasů
40

CSS a JavaScript souborů se nemění příliš často, takže chci, aby se do mezipaměti webového prohlížeče. Ale taky chci webový prohlížeč vidět změny provedené v těchto souborech, aniž by uživatel musel vyčistit své cache prohlížeče. Také chtějí řešení, které funguje dobře se systémem pro správu verzí, jako je Subversion.


Některá řešení, které jsem viděl znamenat přidávání číslo verze na konec souboru ve formě řetězce dotazu.

Dalo by se použít číslo SVN revize automatizovat to pro vás: ASP.NET Zobrazení SVN revize číslo

Můžete určit, jak se patří revize proměnnou jiného souboru? To je v HTML souboru mohu uvést číslo revize v URL do CSS nebo souboru JavaScriptu.

V Subversion knize se píše o revizi: „Toto klíčové slovo popisuje poslední známou revize, ve kterém je tento soubor změněn v úložišti“.

Firefox také umožňuje stiskem CTRL+ Rpřeložit vše na určité stránce.

K objasnění jsem hledal řešení, které nevyžadují, aby uživatel udělat něco z jejich strany.

Položena 06/08/2008 v 10:38
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
20

Zjistil jsem, že když se připojí poslední změny časové razítko souboru na konec URL prohlížeč bude požadovat soubory, když je změněn. Například v 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 '<link rel="stylesheet" type="text/css" media="' .
        $media . '" href="' . urlmtime($css_url) . '">'."\n";
}

function include_javascript($javascript_url) {
   echo '<script type="text/javascript" src="' . urlmtime($javascript_url) .
        '"></script>'."\n";
}
Odpovězeno 06/08/2008 v 10:41
zdroj uživatelem

hlasů
9

Některá řešení, které jsem viděl znamenat přidávání číslo verze na konec souboru ve formě řetězce dotazu.

<script type="text/javascript" src="funkycode.js?v1">

Dalo by se použít číslo SVN revize automatizovat to pro vás tím, že zahrnuje slovo LastChangedRevision ve vaší html soubor po kterém v1 se zobrazí výše. Musíte také nastavit vaše úložiště, jak toho dosáhnout.

Doufám, že to dále vysvětluje svou odpověď?

Firefox také umožňuje stiskem CTRL+ Rpřeložit vše na určité stránce.

Odpovězeno 06/08/2008 v 10:52
zdroj uživatelem

hlasů
6

Podle mého názoru je lepší, aby číslo verze součástí samotného souboru např myscript.1.2.3.js. Můžete nastavit svůj webový server do mezipaměti tento soubor navždy, a jen přidat nový js soubor, když máte novou verzi.

Odpovězeno 06/08/2008 v 22:33
zdroj uživatelem

hlasů
5

Také jsem přemýšlel, jak to udělat, když jsem našel odpověď Grom je. Díky za kód.

Snažil jsem se pochopit, jak se kód má být použit. (I nepoužívají verzovací systém). V souhrnu lze konstatovat, uvedete časové razítko (TS) při volání stylů. Nejste v plánu o změně stylů často:

<?php 
    include ('grom_file.php');
    // timestamp on the filename has to be updated manually
    include_css('_stylesheets/style.css?ts=20080912162813', 'all');
?>
Odpovězeno 13/09/2008 v 17:54
zdroj uživatelem

hlasů
5

Když se vydat novou verzi své CSS nebo JS knihoven, způsobí následující nastat:

  1. upravit název souboru obsahovat jedinečný řetězec verze
  2. upravit soubory HTML, které odkazují na knihovnu bodu na číslo verze souboru

(To je obvykle poměrně jednoduchá záležitost pro scénář uvolnění)

Nyní můžete nastavit Expires pro CSS / JS být let v budoucnosti. Kdykoliv změníte obsah, pokud se optimalizace pro vyhledávače HTML odkazuje na nové URI, prohlížeč již nebude používat staré mezipaměti kopii.

To způsobí, že chování mezipaměti chcete, bez nutnosti cokoli uživatele.

Odpovězeno 09/08/2008 v 15:37
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more