Vra

CSS en JavaScript-lêers nie baie dikwels verander, so ek wil hê hulle moet wees kas deur die webblaaier. Maar ek wil ook die webblaaier om veranderinge aan hierdie lêers te sien sonder dat die gebruiker om die leser kas skoon te maak. wil ook 'n oplossing te vind wat goed werk saam met 'n weergawe beheer stelsel soos Subversion.


  

Sommige oplossings wat ek gesien het behels die toevoeging van 'n weergawe van die einde van die lêer in die vorm van 'n navraag string.

     

Kan gebruik die SVN hersiening aantal van hierdie outomatiseer vir julle: ASP.NET Wys SVN Hersiening nommer

Kan jy presies weet hoe jy die Hersiening veranderlike van 'n ander lêer? Dit is in die HTML-lêer Ek kan die aantal Hersiening in die URL na die CSS of JavaScript-lêer in te sluit.

In die Subversion boek dit sê oor Hersiening: "Die navraag beskryf die laaste bekende hersiening waarin hierdie lêer verander in die bewaarplek ".

  

Firefox ook laat druk Ctrl + R om alles te herlaai op 'n spesifieke bladsy.

Om te verduidelik Ek is op soek na oplossings wat nie die gebruiker vereis om iets te doen oor hul deel.

Was dit nuttig?

Oplossing

Ek het gevind dat as jy die laaste wysiging datum en tyd van die lêer voeg op die einde van die URL van die leser sal die lêers versoek wanneer dit verander. Byvoorbeeld in 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";
}

Ander wenke

Sommige oplossings wat ek gesien het behels die toevoeging van 'n weergawe van die einde van die lêer in die vorm van 'n navraag string.

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

Jy kan die SVN hersiening nommer gebruik om hierdie outomatiseer vir jou deur die insluiting van die woord LastChangedRevision in jou HTML-lêer na waar v1 verskyn hierbo. Jy moet ook die opstel van jou bron om dit te doen.

Ek hoop dit my antwoord verder verduidelik?

Firefox ook laat druk Ctrl + R om alles te herlaai op 'n spesifieke bladsy.

In my mening, is dit beter om die weergawe nommer deel van die lêer self bv maak myscript.1.2.3.js. Jy kan jou webbediener stel om hierdie lêer vir ewig kas, en net 'n nuwe JS lêer voeg wanneer jy 'n nuwe weergawe het.

As jy 'n nuwe weergawe van jou CSS of JS biblioteke vry te stel, veroorsaak dat die volgende plaasvind:

  1. verander die lêernaam na 'n unieke weergawe string sluit
  2. die HTML-lêers wat die biblioteek verwysing na punt by die weergawes lêer verander

(dit is gewoonlik 'n redelik eenvoudige saak vir 'n vrystelling script)

Nou kan jy die Verval vir die CSS / JS te jaar in die toekoms wees stel. Wanneer jy die inhoud te verander, indien die verwysings HTML dui op 'n nuwe URI, implementeer sal nie meer die ou gekaste kopie gebruik.

Dit veroorsaak dat die kas gedrag wat jy wil sonder om iets van die gebruiker vereis.

Ek was ook wonder hoe om dit te doen, omdat ek gevind antwoord GROM se. Dankie vir die kode.

Ek het gesukkel met die begrip van hoe die kode was veronderstel om gebruik te word. (Ek gebruik nie 'n weergawe beheer stelsel.) Om op te som, jy sluit die tyd stempel (ts) wanneer jy bel die style. Jy is nie van plan om die verandering van die style dikwels:

<?php 
    include ('grom_file.php');
    // timestamp on the filename has to be updated manually
    include_css('_stylesheets/style.css?ts=20080912162813', 'all');
?>
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top