it-swarm.com.de

Ist es besser, Cache oder CDN zu verwenden?

Ich habe beim Laden statischer Dateien die Leistung des Browsers untersucht, und dieser Zweifel ist aufgetreten.

Einige Leute sagen, dass die Verwendung von statischen CDN-Dateien (z. B. Google Code, jQuery latest, AJAX CDN, ...) die Leistung verbessert, da Anforderungen von einer anderen Domain als der gesamten Webseite stammen.

Eine andere Möglichkeit, die Leistung zu verbessern, besteht darin, den Expires -Header auf einige Monate später zu setzen und den Browser zu zwingen, die statischen Dateien zwischenzuspeichern und die Anforderungen zu reduzieren.

Ich frage mich, welche Art und Weise die beste ist, denke über Leistung nach und ob ich beides kombinieren darf.

Vielen Dank im Voraus Jungs, ich liebe StackOverflow.

19
Gustavo Gondim

Letztendlich ist es besser, beide Techniken anzuwenden, wenn Sie die Web-Performance-Optimierung (WPO) einer Site durchführen, die auch als Front-End-Optimierung (FEO) bezeichnet wird. Sie können erstaunlich Hand in Hand arbeiten. Obwohl, wenn ich übereinander wählen müsste , würde ich definitiv Caching wählen jeden Tag. In der Tat würde ich sagen, dass es unerlässlich ist, dass Sie das richtige Ressourcen-Caching für alle Webprojekte einrichten, auch wenn Sie ein CDN verwenden.

Caching

Das Setzen von Expires Headern und das Zwischenspeichern von Ressourcen ist ein Muss und sollte in 100% der Fälle für Ihre Ressourcen durchgeführt werden. Es gibt wirklich keine Entschuldigung dafür, kein Caching durchzuführen. Unter Apache ist dies sehr einfach zu konfigurieren, nachdem mod_expires.c und mod_headers.c aktiviert wurden. Das HTML5 Boilerplate-Projekt hat ein gutes Implementierungsbeispiel in der .htaccess-Datei und wenn Ihr Server etwas anderes wie nginx, lighttpd oder IIS ist, schauen Sie sich diese anderen Serverkonfigurationen an .

Hier ist eine gute Lektüre, wenn jemand Interesse am Caching hat: Mark Nottinghams Caching-Tutorial

Content Delivery Network

Sie haben Google Code, jQuery latest, AJAX CDN erwähnt, und ich möchte nur auf CDN im Allgemeinen eingehen, einschließlich derer, für die Sie bezahlen und auf denen Sie Ihre eigenen Ressourcen hosten. Dies gilt jedoch auch, wenn Sie einfach die von jquery gehosteten Dateien cdn verwenden oder etwas von http laden: //cdnjs.com/ zum Beispiel.

Ich würde sagen, ein CDN ist weniger wichtig als das Festlegen der serverseitigen Header-Zwischenspeicherung, aber ein CDN kann erhebliche Leistungsverbesserungen bieten, aber die Leistung Ihres Content Delivery-Netzwerks variiert je nach anbieter .

Dies gilt insbesondere, wenn Ihr Datenverkehr ein weltweites Publikum ist und der CDN-Anbieter viele weltweite Edge/Peer-Standorte hat. Dies reduziert auch die Webhosting-Bandbreite und die CPU-Auslastung (ein wenig), da Sie einen Teil der Arbeit auf das CDN verlagern, um Ressourcen bereitzustellen.

In einigen seltenen Fällen kann ein CDN die Leistung beeinträchtigen, wenn die Latenz des CDN langsamer ist als Ihr Server. Auch wenn Sie zu viel Parallelisierung von Ressourcen optimieren und verwenden (wenn Sie mehrere Subdomänen wie cdn1, cdn2, cdn3 usw. verwenden), kann dies die Benutzererfahrung verlangsamen und mit zusätzlichen DNS-Lookups zu Overhead führen. Hier ist ein gutes Gleichgewicht gefragt.

Eine weitere negative Auswirkung kann ein Ausfall des CDN sein. Es ist passiert und wird wieder passieren. Dies gilt eher für kostenloses CDN. Wenn der CDN aus irgendeinem Grund ausfällt, ist dies auch für Ihre Site der Fall. Es ist ein weiteres potenzielles Single Point of Failure (SPOF). Bei JavaScript-Ressourcen können Sie die Ressource vom CDN herunterladen und laden. Sollte dies aus irgendeinem Grund fehlschlagen, suchen Sie nach einer lokalen Kopie und laden Sie diese. Hier ist ein Beispiel für das Laden von jQuery von ajax.googleapis.com mit einem Fallback (entnommen aus der HTML5-Boilerplate):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.2.min.js"><\/script>')</script>

Neben den offensichtlichen kostenlosen API-Ressourcen (jquery, google api usw.) müssen Sie möglicherweise eine Nutzungsgebühr entrichten, damit die Hosting-Kosten steigen. Natürlich müssen Sie für einige CDNs sogar extra bezahlen, um Zugang zu bestimmten Standorten zu erhalten. Beispielsweise könnten asiatische Knoten zusätzliche Kosten verursachen als Nordamerika.

60

Ein CDN bietet den Vorteil, mehrere Server bereitzustellen und den Datenverkehr automatisch an den nächsten Standort Ihres Clients zu leiten. Dies kann zu einer schnelleren Lieferung führen, die je nach Standort optimiert ist. 

Für statische Inhalte sind keine speziellen Anwendungsserver (wie dynamische Inhalte) erforderlich. Wenn Sie sie also auf ein CDN abladen möchten, bedeutet dies, dass Sie diesen Verkehr vollständig reduzieren. Ein Streaming-Videoclip ist möglicherweise zu groß zum Cachen oder sollte nicht zwischengespeichert werden. Sie möchten diese Bandbreite jedoch nicht unbedingt unterstützen. Ein CDN übernimmt diesen Verkehr für Sie. 

Es geht nicht immer um den Cache. Ein kleiner Applikations-Webserver möchte vielleicht nur den dynamischen Inhalt bereitstellen, benötigt jedoch eine Lösung für die Medien, die stark betroffen sind und sich selten ändern. CDNs behandeln das Skalierungsproblem für Sie. 

4
jdi

Für öffentliche Anwendungen wählen Sie CDN. Die Zwischenspeicherung hilft bei wiederholten Anforderungen, nicht jedoch bei der ersten Anforderung. Um ein schnelles Laden beim ersten Seitenbesuch zu gewährleisten, verwenden Sie ein CDN wird bereits von einer anderen Site zwischengespeichert. Wie bereits erwähnt, werden CDN-Ergebnisse natürlich auch stark zwischengespeichert.

Wenn Sie jedoch über eine Intranet-Website verfügen, können Sie die Dateien selbst hosten, da sie normalerweise schneller von einer internen Quelle als von einem CDN geladen werden. Sie haben auch die Möglichkeit, mehrere Dateien zu einer zusammenzufassen, um die Anzahl zu reduzieren von Anfragen.

3
Albin Sunnanbo

Mit @Anthony_Hatzopoulos zustimmen (+1)

CDN ergänzt Caching, und in einigen Fällen wird es dabei helfen, Caching-Anweisungen zu optimieren.

Ein Unternehmen, das ich beispielsweise für integrierte Verhaltenslernalgorithmen in sein CDN arbeite, um dynamisch erzeugte Objekte zu identifizieren und zu cachen.

Normalerweise wären diese Objekte nicht zwischengespeichert (d. H. [Cache-Control: max-age = 0] Http-Header), aber in diesem Fall kann das System Caching-Möglichkeiten erkennen und die ursprünglichen HTTP-Header-Anweisungen überschreiben. (Beispiel: Ein dynamisch generiertes, beliebiges Produkt, das zwischengespeichert werden sollte, oder eine beliebte Suchergebnisseite, die zwar dynamisch generiert wird, aber immer noch in derselben Form Tausenden von Benutzern präsentiert wird. 

Und ja, bevor Sie fragen, kann das System auch personalisierte Daten und sehr Frische identifizieren, um Fehlalarme zu verhindern ... :)

Die Implementierung eines solchen Algorithmus war nur aufgrund einer Reverse-Proxy-CDN-Technologie möglich. Dies ist ein Beispiel dafür, wie sich CDN und Caching gegenseitig ergänzen können, um bessere und intelligentere Beschleunigungslösungen zu schaffen.

1
Igal Zeifman

Neben diesen Expertenzitaten ist die Erklärung perfekt, um CDN-Technologie zu verstehen und zu zwischenspeichern. Ich würde nur meine persönliche Erfahrung bereitstellen, ich hatte an der Joomla-Virtuemart-Site gearbeitet, und leider wird die Aktualisierung der neuen Joomla- und Virtuemart-Version nicht gestattet Es waren zu viele angepasste Felder auf Produktseiten, so dass der Besucher bis zu 900/DAY und viele Benutzer ihre Artikel nicht mehr in den Warenkorb legen konnte, da jedes Mal, wenn die Lots aufgerufen wurden, js und ajax für Bestellartikel aufgerufen wurden, zu viel Zeit in Anspruch nahm

Nachdem wir die Website optimiert haben, entscheiden wir uns für CDN, dann wird die Leistung wirklich gut, zusammen mit einem Rekord von gtmetrix, der erste YSlow-Score war 50%, dann nach Optimierung + CDN sind es 74%.

https://gtmetrix.com/reports/www.florihana.com/jWlY35im

Über das Dashboard von CDN können Sie sehen, welches Rechenzentrum am meisten gekostet hat und Daten am meisten für Ihre Marketingverbesserung in Rechnung gestellt wurden:

 enter image description here

Aber ja, um CDN zu konfigurieren, muss auf die Bereinigungszeit geachtet werden, und die Anzahl der Ressourcen-CDN muss ausgeglichen werden, wenn ein Problem ausfällt, das Sie herausfinden müssen, welche Ressourcen-CDN verursachen

Hoffe, das hilft

0
tess hsu