2010-04-22 7 views
5

Ich bin ein Webentwickler, habe mit PHP und .NET beide gearbeitet. Mit über einem Jahr Erfahrung im Web bin ich nicht in der Lage gewesen, die Browser-Caching-Funktionen gründlich zu verstehen, ich hoffe, Web Gurus hier können mir dabei helfen. Fragen, die ich in meinem Kopf habe, sind:Wie funktioniert der Browser mit Ablaufköpfen, Cache-Control-Headern, Last-Modified-Header?

  • Wie funktioniert Browser Sachen tatsächlich zwischenspeichert, es zu sehen anfordert, wenn die Cache-Datei auf dem Server geändert hat oder nicht,
  • Was der ideale Weg für einen Entwickler ist um das Browser-Caching in vollem Umfang zu nutzen, aber auch, um neue Änderungen auf der Website ohne Probleme zu pushen. Ich denke, wenn Browser irgendwie meine CSS und JS und Images zwischenspeichert, und dann nur eine Überprüfung für ihre Änderung auf dem Server jedes Mal macht, kann dies das Problem sortieren. aber ich bin nicht sicher, wie es geht.
+0

http://www.enhanceie.com/redir/?id=httpperf – EricLaw

Antwort

4

können Dieser Blog-Eintrag helfen:

http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/

Es wird erklärt, wie der Caching verwenden, während die Fähigkeit beibehalten, Änderungen vorzunehmen, wenn erforderlich.

+1

Ich lese diesen Blogpost vor dem Stellen dieser Frage, aber er beantwortet meine Fragen nicht, weil er möchte, dass ich immer wieder eine Abfragezeichenkette hinzufüge, während ich meine Dateien ändere, und mit den meisten Seiten haben wir heutzutage viele CSS- und JS-Dateien Laden, und viele Bilder, muss ich eine andere dedizierte Ressource anstellen, um die Querystring dann täglich zu überprüfen und zu ändern. :) –

+0

Wenn Sie viele Ressourcen haben, die sich ändern, benötigen Sie eine Art automatisiertes System, das die eingebetteten URLs vor der Bereitstellung aktualisiert. – HttpWatchSupport

2

Mit CSS-Dateien ein Standard "Abhilfe" ist schrittweise einen Parameter auf einen Link hinzuzufügen:

<link rel="stylesheet" href="http://mysite.com/styles.css?v=1"> 
<link rel="stylesheet" href="http://mysite.com/styles.css?v=2"> 
... 

Dieser einen Browser zwingen wird, um die Datei zu laden.

+0

Ich möchte, dass ich immer wieder eine Abfragezeichenkette hinzufüge, wenn ich meine Dateien ändere, und mit den meisten Websites haben wir heutzutage viele CSS und JS-Dateien laden, und viele Bilder, ich muss eine andere dedizierte Ressource mieten, um den Querystring dann täglich zu überprüfen und zu ändern. :) –

+0

@Umair: Sie sollten in der Lage sein, die Abfragezeichenfolge vollständig zu automatisieren, wenn Sie in PHP oder .NET arbeiten. Wenn Sie die vollständige URL fest in statische HTML-Dateien codieren, wird es schwieriger, dies zu tun, aber Ihre Site ist sowieso nicht wirklich so dynamisch. – Avi

+0

wird nicht die Verwendung von Expires Header, Browser-Caching und Last-Modified-seit mir die Mühe der Automatisierung von Abfragezeichenfolgen –

0

Wenn Sie eine serverseitige Sprache verwenden, können Sie den Browser zwingen, die Datei erneut herunterzuladen.

<script src="script.js?<?= uniqid(); ?>"> 
<img src="myfile.jpg?<?= uniqid(); ?>"> 

Aber Cache ist gut, wenn Sie eine schnellere Website haben möchten, bevor Sie beginnen im Auge zu deaktivieren Sie daran, dass alles, was Cache ist wieder nicht heruntergeladen werden müssen.

Es gibt eine andere Möglichkeit zu steuern, was zwischengespeichert werden muss, HTML5 Application Cache, dumpen Sie Ihre Cache-Logik in die Manifest-Datei. Daher wird jede Datei in Ihrem Manifest erst wieder heruntergeladen, wenn die Manifestdatei selbst geändert wurde.

Denken Sie daran, dass Sie, wenn Sie etwas in einer JS-, CSS-, Bilddatei geändert haben und diese Änderung an wiederkehrende Besucher weitergeben müssen, auch Ihre Manifestdatei aktualisieren müssen. Sie können wie das Veröffentlichungsdatum hinzufügen, auf diese Weise weiß der Browser, dass es ein neues Manifest ist, und es wird alles erneut herunterladen.