JavaScript-probleem Cachingprobleem

I Have ASP.Net MVC 3 App. Im using YUICompressor.Net for minifying Javascripts & CSS Files during the post build using MSBuild.

Het gegenereerde gemineerde JavaScript-bestand is JSMin.js en CssMin.css Mijn hoofdpagina verwijst naar deze bestanden, zoals hieronder:

link rel="stylesheet" href="@Url.Content("~/Content/CssMin.css")" type="text/css">

script type="text/javascript" src="@Url.Content("~/Scripts/JsMin.js")" >

Now the issue is minified version gets cached in the end users browser, so our new fixes in te javascript/css is not reflected in the end user browser because those files gets cached as it is using the same file name. I'm looking for some kind of clean process which will build the minified JavaScript & CSS file with version number to it like JsMin1.0.js & CssMin1.1.js and automatically update the reference for the below

link rel="stylesheet" href="@Url.Content("~/Content/CssMin.css")" type="text/css">

script type="text/javascript" src="@Url.Content("~/Scripts/JsMin.js")" >

Uw hulp wordt zeer op prijs gesteld. Bedankt.

3
Ter verduidelijking: bent u op zoek naar een tool die het toevoegen van het versienummer automatiseert (en vervolgens de verwijzingen ernaar bijwerkt)?
toegevoegd de auteur dgvid, de bron
Ja, een soort gereedschap met minimale inspanningen.
toegevoegd de auteur user1084158, de bron

3 antwoord

U moet cachebusting gebruiken in uw CDN statische media bron-URL's:

http://codebetter.com/ karlseguin/2010/01/11/asp-net-performance-part-3-cachebusting/

U kunt de cache van de browser niet wissen.

0
toegevoegd
Query string-methode mislukt niet. Als u het tegendeel beweert, licht dan uw rekening in.
toegevoegd de auteur Mikko Ohtamaa, de bron
Problemen ondervinden bij het cachen van js- en css-bestanden ...: o (
toegevoegd de auteur Avi, de bron
Bedankt voor de info die ik niet ken. Maar het probleem met de methode voor het toevoegen van de aanroepstring mislukt in sommige browserversies, met name IE8. Omdat onze site een openbare website is die zich richt op alle verschillende beschikbare browsertypen en -versies die op zoek zijn naar een methodiek die alle casussen omvat.
toegevoegd de auteur user1084158, de bron

U kunt een oplossing gebruiken zoals https://github.com/vincpa/mvc.resourceloader die zorgt voor browsercaching en stelt de juiste etag-headers in en onderhoudt versies. Nogmaals, ik heb deze bibliotheek geschreven, dus ik ben bevooroordeeld :)

Naar mijn mening is het beter om een ​​hash in plaats van een versienummer te gebruiken. Op die manier hoeft u niet bij te houden welke versie u gebruikt.

Ook wilt u voorkomen dat versienummers in queryreeksen worden toegevoegd, omdat sommige proxy's geen bronnen in de cache plaatsen die queryreeksen bevatten.

0
toegevoegd

Ja. U moet de URL wijzigen. Anders zal de browser cche van de gebruiker waarschijnlijk de laatst bekeken versie dienen. Het is het beste om uw bronnen te verspanen, zodat een versieteken onderdeel wordt van de url. U wilt deze versietekenreeks meestal in het pad of de bestandsnaam plaatsen en niet in de queryreeks, zodat deze netjes speelt met alle proxies en CDN's. Dit kan ongetwijfeld een pijn zijn. U moet niet alleen het bestand een versie geven, maar u moet ook controleren of uw links ook allemaal zijn bijgewerkt, zodat u ze handmatig moet wijzigen of een buildproces of app-architectuur hebt die dit voor u verzorgt.

Ik heb een OSS-project, RequestReduce , dat CSS en JS verkort en combineert tijdens runtime. De oplossing verwerkt alle link-rewrites. De enige vangst is dat wanneer u van inhoud verandert, u de cache van RequestReduce moet doorspoelen, wat eenvoudig te doen is via een dashboard dat door de app wordt geleverd.

Het sprites en optimaliseert ook achtergrondafbeeldingen.

Bekijk http://www.requestreduce.com voor meer informatie.

0
toegevoegd
Het zou moeten werken met elke RFC-compatibele ETag-implementatie. Dat gezegd hebbende, ik heb getest met alle "moderne" browsers, maar heb geen oudere IE-versies getest, maar heb geen reden om aan te nemen dat dit zou mislukken.
toegevoegd de auteur Matt Wrock, de bron
Bedankt Matt. Deze methode lijkt veelbelovend. Laat me het proberen en kom later terug. Kan je trouwens bevestigen of Etag werkt in alle verschillende browsers (van lagere versies tot hogere versies)?
toegevoegd de auteur user1084158, de bron
Bedankt Matt. Gewaardeerd.
toegevoegd de auteur user1084158, de bron