Frage

Ich bin in dem Prozess eine soziale Netzwerk-Website zu entwickeln.

Und wurde von Skalierbarkeit vom ersten Tag des Projekts zu denken, habe ich in Ordnung, den Standort und Anfragen an die besten Kräften abgestimmt.

Allerdings; Bestimmte Seiten sind sehr Daten schwer und ich bin mir nicht ganz sicher, ob sie so schnell geladen werden wie sie konnten so von Ich dachte, eine verteilte Caching-Lösung zu implementieren.

Aber nicht ganz sicher, was soll ich Cache und nicht-Cache. Oder wenn aktuelle Ladezeiten von 1 Sekunde gut oder schlecht ist.

Die schwerste Abfrage Greifteil Informationen diese Abfrage alle des Mitglieds bekommt Informationen und alles, was im Zusammenhang mit ihnen wie in diesem Fall die Website ihre Ziele, Blog-Einträge vom Typ, Ermutigungen, Fotos, Status-Updates (wie Twitter), ein Blog info (für Crossposting ihre Einträge) etc etc.

Wie auch immer, sollte ich cachen diese Informationen? Und denken Sie 1 Sekunde Ladezeiten relativ schnell sind? Einige Seiten sind weniger als eine Sekunde zwischen 4-6 10tel einer Sekunde.

War es hilfreich?

Lösung

würde ich Caching auf jede implementieren und jede Schicht Ihrer Anwendung, wenn überhaupt möglich.

Sie können Seiten-Cache auf höchster Ebene, die Code-Ebene-Objekte an, und sichern Sie Ihre Datenbank beiden Abfragen wird das Caching und Schlüsseldaten korrekt auf der untersten Ebene.

Im Hinblick darauf, was Sie zwischenspeichern müssen, alle Objekte, die repeadedly zugegriffen werden sollte zwischengespeichert werden, insbesondere solche, die unwahrscheinlich sind sehr oft zu ändern. Anschließend können Sie dieses Objekt Cache nur zurückgesetzt, wenn es bearbeitet wird. (Seien Sie vorsichtig von Caching-Objekten, die als konstanten Zyklus häufig aktualisiert werden auf fast jeder Last, den Cache zu ersetzen, wird die Leistung beeinträchtigt, anstatt sie zu verbessern)

Für die Leistungsmessung, würde ich nicht sehen, wie lange eine einzelne Seite nimmt, zu laden, aber für einige Performance-Messwerkzeuge google, wie Sie wirklich testen müssen, wie schnell jeder Seite unter Druck durchführt. Ihre Info-Seite möglicherweise nicht das größte Caching Ziel, wenn es nur selten zum Beispiel zugegriffen wird. Sie sollten sich auf die am häufigsten genutzten Seiten fokussiert werden.

Andere Tipps

Die typische Antwort lautet:

  • Cache Informationen, die selten aktualisiert.
  • Sie nicht zwischenspeichern, was sich ändern häufig.

In Ihrem Fall könnten Sie alles in flachen Dateien (eine Datei pro Benutzer zum Beispiel) Cache und eine Benutzer-Cache-Datei zerstören, wenn etwas von dem entsprechenden aktualisiert wird. Wenn die Cache-Datei nicht vorhanden ist, erstellen Sie es, bevor Sie die zugehörigen Inhalte angezeigt werden.

Jetzt über die Ladezeit (die je nach Standort des Nutzers sehr unterschiedlich sein kann), sind hier einige informativen Zahlen aus einem PHP-Forum einer Spieleseite:

  • JS Ladezeit: 0.274
  • Abfrageanzahl: 15
  • PHP Ladezeit: 0,0524
  • Speichernutzung: 1.013 MB

Und dies wird von der Gemeinde als eine gute Erfahrung betrachtet. Aber es ist furchtbar subjektiv.

Die Seite Lade Frage wurde bereits gestellt:

Was für eine gute Reaktionszeit für eine dynamische, personalisierte Web-Anwendung betrachtet wird?

Im Hinblick auf die Caching, müssen Sie die Höhe der Zeit messen, dass die Daten jedes Mal gegen Laden Laden aus dem Cache ausgegeben würden. Je größer der Cache, desto weniger effektiv wird es. Sie wollen also nicht zu viele Daten in den Cache zu laden. Was wir verwenden hier ist eine rollende Cache, mit den zuletzt verwendeten Daten einmal fallen gelassen werden wir schlagen die Cache-Größe zu begrenzen. Sie dann stimmen die Grenze entsprechend der tatsächlichen Leistungsergebnisse.

Für bestimmte Benutzerprofildaten, speichern, so viel wie möglich in einem FormsAuth Ticket / Cookie. Caching (HttpContext.Current.Cache) benutzerspezifische Elemente werden X-Ressourcen auf dem Server pro Benutzer, die gleiche wie Sitzung würde (aber mit weniger den Kopfschmerzen) erfordern. Wenn Sie so viel wie möglich in den Benutzer Ticket oder Cookie (wie seine 4K) abladen können dann Sie wirklich Ihren Server Leistung helfen, während Skalierung.

Sie sollten nur die Bits von Informationen werden Abrufen, dass die Seite benötigt. Zum Beispiel, wenn Sie Blog Daten werden geladen, DONT Last Fotos. Seine mehr Arbeit, ja, aber wenn Sie skalieren wollen, müssen Sie die Anforderungen für jede Seite analysieren müssen.

Stellen Sie sicher, dass Sie verstehen, gibt es Unterschiede zwischen Datenbankabfrage Caching (Ausführungsplan Wiederverwendung), Object-Caching (Httpcontext.Cache) und Seiten-Caching (Response.Headers [Ablaufdatum]).

Web Design-Guru Vincent Flandern , dass etwas mehr als 4 Sekunden schlägt vor, ist zu lang für eine Web-Seite zu laden . Ich denke, dass dies eine ziemlich gute Faustregel.

Was Caching oder andere Performance-Optimierung gehen, würde ich empfehlen Sie einige Performance-Tests durchzuführen. Es gibt eine Reihe von Performance-Test-Sets auf dem Markt erhältlich. Die Tests werden zeigen, wo die Problembereiche sind. Es gibt keinen Sinn in Sie Caching-Logik etwas hinzufügen, die bereits gut funktioniert. Auf der anderen Seite, Performance-Probleme auftreten können, wo man sie nicht erwarten, an denen Daten, die Sie möglicherweise nicht Caching betrachtet haben.

Etwas, das ich auch mit Performance-Tests gefunden habe, ist, dass es Flecke im Code finden kann, wo Deadlocks auftreten, oder wo einfache Datenbank Optimierungen helfen würden. Vielleicht wird das Hinzufügen eines Index zu einer Tabelle, die eine Seite beschleunigen, anstatt eine Reihe von Caching-Logik hinzuzufügen.

Ich würde es einfach halten, und Refactoring nur für die Leistung, wo Sie so tun müssen.

Auch Test früh und Test oft. Ich kenne eine Menge Leute, die Leistung zu betrachten sagen zuletzt, aber man kann sich in eine Ecke wirklich codieren, wenn man es am wenigsten nicht beginnen, es früh im Entwicklungslebenszyklus berücksichtigen.

schlägt einige der Forschung, dass interaktive Anwendung muss Feedback innerhalb 250ms nicht der Benutzer denken es klemmt oder dass der Vorgang fehlgeschlagen ist. Die Akzeptanz im Web ist etwas, obwohl höher, und in der Regel Rückkopplung wird durch den Web-Browser zur Verfügung gestellt, die eine neue Seite geladen wird. Mit AJAX hat darauf zu achten, obwohl som Art von Feedback zu geben, da der Browser zeigt nicht, was geschieht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top