Frage IIS 7.5-Optimierungen für eine Website, die nur statischen Inhalt bereitstellt


Ich möchte eine cookie-freie Domain einrichten, die statische Inhalte für eine Web-Anwendung bereitstellen soll http://static.net/ Site, die die Stack-Exchange-Sites verwenden.

Meine Frage ist, welche Optimierungen kann ich an meinem IIS 7.5-Setup für eine solche Domäne vornehmen? Zum Beispiel wird es niemals für etwas anderes verantwortlich sein als die Bereitstellung von statischem Inhalt, also wäre die Deaktivierung der ASP.NET-Integration ein guter Schritt für diese Website?

Vorschläge oder Hinweise zum Einrichten einer solchen Site mit IIS 7.5 sind sehr willkommen.

Bearbeiten

Um zu verdeutlichen, dass dies nicht die EINZIGE Site auf dem Server ist, sollten vorgeschlagene Optimierungen auf die Site-Ebene und nicht auf die Server-Level-Konfiguration ausgerichtet sein.


20
2018-04-05 12:30


Ursprung




Antworten:


Dazu gibt es einige Überlegungen, von denen einige auf IIS behandelt werden (HTTP-Komprimierung, Caching-Header-Fx), und einige, die während des Build-Prozesses / vor der Bereitstellung behandelt werden (z. B. Javascript- und CSS-Dateiverkettung und Leerzeichenminification).

Daher ist es schwierig, Ihnen in einer Antwort einen vollständigen Überblick zu geben, da einige davon von Ihren Build- und Release-Methoden abhängen. In hochstufigen Schritten:

  • Die Website ist "cookielos", weil Sie eine neue Domain verwenden, die nicht an Ihre Webapplikation gebunden ist. Da Sie keine Cookies für die Domäne setzen (mit f.x. .NET-Anwendungscode), ist es dann "cookielos".

  • Du solltest absolut  Aktivieren Sie die HTTP-Komprimierung für statischen Textinhalt wie Javascript und CSS.

  • Ich bin nicht der größte IIS-Administrator, aber soweit ich das beurteilen kann, benötigen Sie nur die IIS-Standardkomponenten, die mit dem IIS verknüpft sind grundlegende Serverrolle "Web Server (IIS)".

  • Du solltest absolut aktivieren lange Caching-Header für den statischen Inhalt. Die allgemeine Empfehlung ist 31 Tage, aber Sie können es höher oder niedriger setzen. Denken Sie daran, wenn Sie statischen Inhalt mit langen Cache-Headern bereitstellen, müssen Sie die URL ändern, wenn Sie die Datei ändern, um zu verhindern, dass alter zwischengespeicherter Inhalt von den Clients wiederverwendet wird.

  • Sie sollte Aktivieren Sie HTTP Keep-Alive (dieselben Dokumente wie Caching-Header).

Darüber hinaus gibt es vorbereitende Aufgaben, wie z Leerzeichen komprimieren Javascript und CSS, und Idealerweise komprimieren Sie PNGs besserusw. Dies ist, wo Ihre Entwicklungstools und Build-Zyklus hilft zu entscheiden, wie Sie vorgehen.

Wenn Sie fertig sind, laden Sie einige Dateien von Ihrem statische Server mit aktiviertem YSlow. Ich finde das "Classic V2" Regelsatz gibt den größten Einfluss auf die Leistung, daher würde ich vorschlagen, Ihre Punktzahl mit diesem YSlow-Regelwerk zu vergleichen.

Von dem Regelsatz "Classic V2" gelten diese Regeln für die IIS-Instanzen und Inhalte Ihres statischen Servers:

3. Add an Expires or a Cache-Control Header
4. Gzip Components
10. Minify JavaScript and CSS
11. Avoid Redirects
13. Configure ETags
19. Use Cookie-Free Domains for Components
22. Make favicon.ico Small and Cacheable

17
2018-04-05 22:26



Vielen Dank für Ihre Kommentare: Ich habe mich bereits um die Überlegungen zur Vorproduktion gekümmert. Was ich wirklich will, ist das Wesentliche der IIS-Konfiguration. Da es nichts als statischen Inhalt gibt, nehme ich an, dass ich viele Dinge aus der HTTP-Pipeline usw. entfernen kann. - DanP
@DanP: Es gibt wirklich nicht viel Arbeit bei der Einrichtung von IIS. Microsoft ist gut darin, "minimale Standardkonfigurationen" zu versenden. Leistungsoptimierung durch das Entfernen von IIS-Komponenten, die Teil der grundlegenden Serverrolle sind, ist IMHO vorzeitige Optimierung. Ich kann fast garantieren, dass sich der Leistungsgewinn nicht lohnt, da statische Dateidienste normalerweise eine trivial niedrige Serverlast haben. Für die Endbenutzerleistung ist es wichtig, die HTTP-Semantik richtig zu machen - Caching-Header, Komprimierung, Keepalive, wie in den oben genannten Dokumenten. - Jesper Mortensen
Die Standardwerte sind für die statische Dateibereitstellung vorgesehen. Wenn Sie nur die Webserverrolle hinzufügen, sind Sie mit einer minimalen Pipeline für die Bereitstellung statischer Dateien ausgestattet. Also, um die Pipeline zu minimieren - installieren Sie nichts anderes! - TristanK
@TristanK: Ich denke, ich sollte genauer sein ... das ist nicht die EINZIGE Seite auf dem IIS-Server, also muss ich meine Optimierungen auf der Site-Ebene machen, nicht auf der Server-Ebene. - DanP
Ja, das ist eine Schlüsselinformation. Wenn Sie entschieden haben, dass dies der von Ihnen gewählte Pfad ist, dann a) Installieren Sie einen neuen, um ihn zu vergleichen, b) markieren Sie alle Module / Handler, die Sie entfernen möchten (die nicht Teil der Standardinstallation sind) mit precondition = " AppPoolName! = StaticPool "(könnte die Syntax dort rückwärts haben). Das ist so ziemlich alles, um Module in einen gegebenen App-Pool ein- oder auszuschließen. - TristanK


Da ist ein sehr interessantes Schreiben hier wo jemand IIS verwendet, um statische Dateien zu liefern. Es konzentriert sich hauptsächlich auf das Anpassen der IIS-Datei-Caching-Einstellungen, um die Festplattenaktivität einzuschränken (was sein Flaschenhals war). Er sagt, er habe eine 20-fache Leistungssteigerung gesehen.


9
2018-05-17 14:21