Frage

Ein Mitentwickler hat kürzlich aufgefordert, dass der Aspbufferlimit in IIS 6 vom Standardwert von 4 MB auf rund 200 MB für das Streamieren größerer Postleitzahlen erhöht wird.

Nachdem ich die klassische ASP -Welt vor einiger Zeit verlassen hatte, kratzte ich mir den Kopf, warum Sie ein Binärschreiber puffern möchten, und schlug einfach die Einstellung vor Response.Buffer = false. Aber gibt es einen Fall, in dem Sie wirklich 50 -fach die Standardgröße machen müssen?

Offensichtlich wäre der Speicherverbrauch die größte Sorge. Gibt es andere Bedenken bei der Änderung dieser Standardeinstellung?

War es hilfreich?

Lösung

Das Erhöhen des Puffers wie dieser ist eine äußerst schlechte Idee. Sie würden es jedem Besucher auf Ihrer Website erlauben, bis zu dieser Menge an RAM zu verwenden. Wenn dein BinaryWrite/Response.Buffer=false Lösung beschwichtigt ihn nicht, Sie könnten auch vorschlagen, dass er anruft Response.Flush() jetzt und dann. Beide wäre vorzuziehen, die Puffergröße zu erhöhen.

Wenn Sie nicht einmal einen sehr guten Grund haben, sollten Sie dies nicht einmal durch den ASP -Prozessor bestehen. Schreiben Sie es an einen besonderen Ort auf der Festplatte, der für solche Dinge vorgesehen ist, und leiten Sie dort stattdessen um.

Andere Tipps

Einer der Nachteile, den Puffer auszuschalten (Sie könnten Flush verwenden, aber ich verstehe wirklich nicht, warum Sie das in diesem Szenario tun würden), ist, dass der Kunde nicht lernt, was die Inhaltslänge zu Beginn des Downloads hat. Daher ist der Browser -Dialog am anderen Ende weniger bedeutsam, es kann nicht erkennen, wie viel Fortschritte erzielt wurden.

Eine bessere (IMO) Alternative besteht darin, den gewünschten Inhalt in eine temporäre Datei zu schreiben (möglicherweise mit GUID für den Dateinamen) und dann eine Weiterleitung an den Client zu senden, der auf diese temporäre Datei zeigt.

Es gibt eine Reihe von Gründen, warum dieser Ansatz besser ist:-

  • Der Kunde erhält gute Fortschrittsinformationen im Dialogfeld oder Anwendung, die die Daten empfangen
  • Einige Anwendungen können von Byte Range -Abrufen genutzt werden, die nur gut funktionieren, wenn der Server "statische" Inhalte liefert.
  • Die temporäre Datei kann wiederverwendet werden, um Anfragen von anderen Kunden zu schützen

Es gibt jedoch eine Reihe von Nachteilen:-

  • Wenn das Erstellen des Dateiinhalts einige Zeit dauert, kann das Schreiben in eine temporäre Datei daher eine Latenz hinterlassen, bevor Daten empfangen werden und die Download -Zeit erhöht werden.
  • Wenn für den Inhalt eine starke Sicherheit benötigt wird, in der eine statische Datei herumliegt
  • Bei alten temporären Dateien besteht ein gewisses Haushalt.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top