2009-06-11 5 views
2

Ich versuche, herauszufinden, die beste Möglichkeit, Caching für eine website Ich baue. Es hängt stark von Bildschirm Scraping der Wikipedia-Website. Hier ist der Prozess, den ich zur Zeit mache:Finden Sie die richtige Caching-und Komprimierungs-Strategie für asp.net

  1. Benutzer ein Thema aus wikipedia über meine Website anfordert (dh http://www.wikipedia.org/wiki/Kevin_Bacon wären http://www.wikipediamaze.com/wiki?topic?=Kevin_Bacon) Hinweis: Da IIS nicht requests that end in a '.' verarbeiten kann ich gezwungen ist, die Abfragezeichenfolgeflag zu verwenden Parameter
  2. prüfen, um zu sehen, ob ich schon die formatierte hTML-in meiner Datenbank gespeichert haben, und wenn es nicht dann einfach auf den
  3. Benutzer anzeigen
  4. Ansonsten führe ich eine Web-Anfrage zu wikipedia
  5. Dekomprimieren der Strom, wenn nötig.
  6. Tun Sie eine Reihe von DOM-Manipulation, um die Sachen loszuwerden, die ich nicht brauche (und Dinge injizieren, die ich brauche).
  7. Speichern Sie die HTML in meiner Datenbank für zukünftige Anfragen
  8. Rückkehr der HTML an den Browser

Da es auf dem Bildschirm Schaben und DOM-Manipulation beruht Ich versuche, die Dinge zügig zu halten, so dass ich nur tun müssen es einmal pro Thema anstatt für jede einzelne Anfrage. Hier sind meine Fragen:

  1. Gibt es eine bessere Art und Weise des Caching oder zusätzliche Dinge zu tun, was ich tun kann Performace helfen?
  2. Ich weiß, dass asp.net Caching-Mechanismus eingebaut hat, aber wird es auf die Weise arbeiten, dass ich es brauche? Ich möchte nicht das HTML (ziemlich schwer) aus der Datenbank bei jeder Anfrage abrufen müssen, aber ich muss das HTML speichern, so dass jeder Benutzer die gleiche Seite bekommt. Ich will immer nur einmal die Daten von Wikipedia bekommen.
  3. Gibt es etwas, was ich mit der Komprimierung tun kann, um es schneller zum Browser zu bekommen, und wenn ja, kann der Browser die HTML-Ausgabe umgehen und anzeigen? Oder ist das nicht einmal eine Überlegung? Der einzige Grund, den ich frage, ist, dass einige der Seiten, die ich durch den HttpWebRequest wikipedia geschickt habe, als gzip-Stream durchkommen.

Alle und alle Vorschläge, Anleitungen, etc. werden sehr geschätzt.

Danke!

Antwort

1

Sie können versuchen, den OutputCache für Ihre Seite mit VaryByParam = topic zu aktivieren. Das speichert eine Kopie der Seite in Arbeitsspeicher, wenn mehrere Clients es anfordern. Wenn die Seite nicht im Speicher ist, kann der Server sie aus Ihrer Datenbank abrufen. Das Schöne an OutputCache ist, dass Sie sogar eine gezippte Version des HTML-Codes speichern können (verwenden Sie VaryByEncoding)

Wenn es ein Problem für Sie ist, den Inhalt von Wikipedia zu dekomprimieren, dann senden Sie keinen Accept-Encoding-Header. Das sollte Wikipedia zwingen, die Seite unkomprimiert an Sie zu senden.

1

Caching-Strategie: Schreiben Sie den HTML-Code in eine statische Datei, und laden Sie die Benutzer aus dieser Datei herunter. Komprimierungsstrategie: Auschecken Google's PageSpeed Best Practices.

Verwandte Themen