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


21

Ich möchte eine cookiefreie Domain einrichten, die statischen Inhalt für eine Webanwendung bereitstellt, ähnlich der Website http://sstatic.net/ , die von den Stapelaustausch-Websites verwendet wird.

Meine Frage ist, welche Optimierungen kann ich an meinem IIS 7.5-Setup für eine solche Domäne vornehmen? Beispielsweise ist es nie für etwas anderes als die Bereitstellung statischer Inhalte verantwortlich. Wäre das Deaktivieren der ASP.NET-Integration also ein guter Schritt für diese Site?

Anregungen oder Hinweise zum Einrichten einer solchen Site mit IIS 7.5 sind jederzeit willkommen.

Bearbeiten

Zur Verdeutlichung ist dies nicht die EINZIGE Site auf dem Server. Daher sollten Optimierungsvorschläge auf die Site-Ebene abzielen und nicht auf die Konfiguration auf Serverebene.

Antworten:


18

Hierbei gibt es verschiedene Überlegungen, von denen einige in IIS behandelt werden (HTTP-Komprimierung, Caching-Header fx) und andere während des Erstellungsprozesses / vor der Bereitstellung behandelt werden (z. B. Verkettung von JavaScript- und CSS-Dateien und Minimierung von Leerzeichen).

Daher ist es ein bisschen schwierig, eine vollständige Übersicht in einer Antwort zu geben, da einige davon von Ihren Build- und Release-Methoden abhängen. In hohen Schritten:

  • Die Website ist "cookielos", da Sie eine neue Domain verwenden, die nicht an Ihre Webanwendung gebunden ist. Da Sie keine Cookies für die Domain setzen (mit fx .NET-Anwendungscode), ist diese dann "cookieless".

  • Sie sollten die HTTP-Komprimierung für statische Textinhalte wie Javascript und CSS unbedingt aktivieren .

  • Ich bin nicht der größte IIS-Administrator, aber soweit ich das beurteilen kann, benötigen Sie nur die Standard-IIS-Komponenten, die der grundlegenden Serverrolle "Webserver (IIS)" zugeordnet sind .

  • Sie sollten unbedingt lange Caching-Header für den statischen Inhalt aktivieren . Die allgemeine Empfehlung ist 31 Tage, aber Sie können sie höher oder niedriger einstellen. 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 vermeiden, dass alter zwischengespeicherter Inhalt von den Clients wiederverwendet wird.

  • Sie sollten HTTP-Keep-Alive aktivieren (dieselben Dokumente wie Caching-Header).

Darüber hinaus gibt es Aufgaben vor der Bereitstellung, z. B. das Komprimieren von Javascript und CSS mit Leerzeichen und im Idealfall das Komprimieren von PNGs usw. Dies sind Ihre Entwicklungstools, und der Erstellungszyklus hilft bei der Entscheidung, wie fortzufahren ist.

Wenn Sie fertig sind, versuchen Sie, mit aktiviertem YSlow einige Dateien von Ihren statischen Servern herunterzuladen . Ich finde, dass der "Classic V2" -Regelsatz die größte Auswirkung auf die Anstrengung hat, daher würde ich vorschlagen, Ihre Punktzahl mit diesem YSlow-Regelsatz zu vergleichen.

Die folgenden Regeln des Regelsatzes "Classic V2" gelten ordnungsgemäß 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

Vielen Dank für Ihre Kommentare: Ich habe mich bereits um die Überlegungen vor der Produktion gekümmert, die Sie angestellt haben. Was ich wirklich will, ist das Wesentliche an der IIS-Konfiguration. Da es nichts als statischen Inhalt gibt,
gehe

1
@ DanP: Es gibt wirklich nicht so viel Arbeit beim Einrichten von IIS. Microsoft ist gut darin, "standardmäßig sichere" Minimalkonfigurationen zu liefern. Die Leistungsoptimierung durch Entfernen von IIS-Komponenten, die Teil der grundlegenden Serverrolle sind, ist IMHO eine vorzeitige Optimierung. Ich kann fast garantieren, dass sich der Leistungsgewinn nicht lohnt, da das Servern mit statischen Dateien normalerweise nur eine geringe Serverauslastung aufweist. Für die Leistung des Endbenutzers ist es wichtig, dass die HTTP-Semantik korrekt zwischengespeichert wird - Header, Komprimierung und Keepalive, wie in den obigen Dokumenten beschrieben.
Jesper M

Die Standardeinstellungen sind für die Bereitstellung statischer Dateien vorgesehen. Wenn Sie nur die Webserverrolle hinzufügen, wird eine minimale Pipeline für die Bereitstellung statischer Dateien eingerichtet. Also, um die Pipeline zu minimieren - installieren Sie nichts anderes!
TristanK

@TristanK: Ich denke, ich sollte genauer sein ... Dies ist nicht die EINZIGE Site auf dem IIS-Server, daher muss ich meine Optimierungen auf der Site-Ebene vornehmen, nicht auf der Serverebene.
DanP

Ja, das sind ein bisschen wichtige Informationen. Wenn Sie entschieden haben, dass dies der von Ihnen gewählte Pfad ist, gehe ich davon aus, dass a) ein neuer Pfad zum Vergleich installiert wird, b) alle Module / Handler, die entfernt werden sollen (die nicht Teil der Standardinstallation sind), mit precondition = " AppPoolName! = StaticPool "(möglicherweise ist die Syntax dort umgekehrt). Das ist so ziemlich das Einschließen / Ausschließen von Modulen in einem bestimmten App-Pool.
TristanK

9

Es gibt eine sehr interessante Beschreibung, in der jemand IIS verwendet, um statische Dateien bereitzustellen. Es konzentriert sich hauptsächlich auf das Optimieren der Caching-Einstellungen für IIS-Dateien, um die Festplattenaktivität zu begrenzen (was sein Engpass war). Er sagt, er habe eine 20-fache Leistungssteigerung gesehen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.