Ich habe verschiedene Informationen über diese Frage gelesen, und ich sehe immer, dass Leute vorschlagen, eine große CSS-Datei, aus der Sicht der Leistung. Aber ich verstehe nicht, dauert es nicht länger, die CSS-Datei für alle Seiten zu laden und dann jede für jede Seite zu laden, wenn es angefordert wird? (Beispiele von dem, was ich gesehen habe: Multiple css files or one big css file? und Single huge .css file vs. multiple smaller specific .css files?). Ja, vielleicht gibt es mehrere HTTP-Anfragen, aber sie werden in den verschiedenen Zeiträumen auftreten, also ist es im Grunde nicht besser, jede Seite zu laden, wenn sie benötigt wird, und dann beim Laden von CSS für jede Seite am Anfang Zeit zu verschwenden und dann sie im laufenden Betrieb anzeigen?Eine große CSS-Datei vs mehrere kleine CSS-Dateien
Antwort
Es gibt Vor- und Nachteile beider Ansätze.
Mit mehreren CSS
Dateien können Sie Ihre CSS
Dateien ordnungsgemäß in der Entwicklung zu organisieren und zu gruppieren. Dies bedeutet jedoch auch, dass mehrere Anforderungen an HTTP
gestellt werden müssen. HTTP
Anfragen sind teurer in Bezug auf die Ladezeit, da es den Server kontaktieren und die Datei abrufen muss.
Auch wenn eine Datei geladen ist, wird sie vom Browser zwischengespeichert. Das heißt, auch wenn das Laden der huge.css
anfangs zu langsam ist, muss es beim Navigieren auf der Site nicht erneut geladen werden.
In meiner Erfahrung und von den meisten Entwicklern angepasst, könnten Sie etwas wie unten tun, um die meisten der beiden Welten zu bekommen.
Verwenden Sie css pre-processers
wie SASS oder LESS. Fragen Sie mich nicht, welches ist besser, es gibt bereits genug Argumente im Internet über diese topic. Wählen Sie einfach eine, mit der Sie sich wohl fühlen. Meine Vorliebe ist SASS
.
CSS-Pre-Processors ermöglicht Ihnen, Ihre CSS-Dateien in kleinere organisierte Dateien zu teilen. Zum Beispiel könnten Sie ein main.sass
haben, die menu.sass, footer.sass, etc.
main.sass
include _menu
include _footer
include _header
...
_
sass zu kompilieren erzählt umfasst nicht getrennte Dateien für jede dieser Dateien sass. Also werden sie alle nur zu einem einzigen main.css
kompiliert werden. Diese Pre-Prozessoren verfügen über eine Funktion zum Kompilieren der angegebenen Sass-Dateien in eine CSS-Datei, die der Browser lesen kann. Sie können auch Tools wie [livereload][4]
verwenden, um sie in Echtzeit zu kompilieren.
Sie werden diese Sass-Dateien in Ihrem Entwicklungscode haben. In Ihrem Produktionscode können Sie jedoch einfach die kompilierte einzelne Datei css
verwenden.
Wenn Sie sich wohler fühlen und die Dinge weiterführen möchten, können Sie das Werkzeug Grunt oder Gulp verwenden. Sie ermöglichen es, Ihre Entwicklungsaufgaben zu automatisieren oder Prozesse aufzubauen. Idealerweise könnten Sie in der Entwicklung eine grunt task
haben, die all Ihre Sass-Dateien überwacht und automatisch in die Datei main.css
kompiliert. In Ihrer index.html
können Sie sich auf diese main.css
beziehen. Sobald Sie zufrieden sind, können Sie auch eine andere Aufgabe namens build task
haben, die automatisch alle Ihre CSS-Dateien kompiliert und minimiert.
Um Ihre Frage zu klären:
Es hängt davon ab, was von Fall am besten in Fall ist, welche Art von Website, die Sie haben und wie haben Sie es gebaut.
Wenn Sie eine Website haben, auf der die Besucher höchstwahrscheinlich nie auf der Website navigieren, als auf bestimmten Seiten, dann ist es besser, CSS für diese bestimmte Seite zu laden und nicht zu kombinieren. Sie können diese CSS-Dateien in den für diese Seite spezifischen Teiltönen laden.
In meiner Erfahrung viele viele Baustellen,
- seine fast immer am besten, eine kombinierte CSS zu laden.
- Wenn eine bestimmte Seite erfordert css wird wahrscheinlich nicht oft besucht werden, enthalten eine Seite spezifische css in seiner templete separat mit einem bedingten
script
-Tag. - Minimieren Sie alle CSS-Dateien nahezu 100% der Zeit
Auch ich werde vorschlagen, dass Sie mehr Zeit der Verbesserung der Effizienz der Server-seitigen Code oder Datenbank, dann zu viel über die CSS-Sorgen verbringen. Es wird produktiver sein, da die meisten Ineffizienzen auf der Serverseite liegen.
Als Antwort auf diese Frage ist es am besten festzustellen, in welchem Browser der Benutzer die Seite anschaut, und dann abhängig davon in x.css, y.css
zu laden. Dies kann auch die Anzahl der CSS-Fehler, die im Browser angezeigt werden, massiv reduzieren, was, so das Gerücht, für SEO gut ist.
Welchen Unterschied würde es machen? – Alex
Anstatt eine große .css-Datei mit einer großen Anzahl von Regeln für mehrere Browser zu lesen, würde sie eine komprimierte .css-Datei mit Regeln für diesen Browser laden (wodurch die Ladezeit reduziert wird). Wie bereits erwähnt, reduziert es CSS-Fehler, die dadurch entstehen, dass bestimmte Attribute von verschiedenen Browsern ignoriert werden müssen. –
Ich benutze meistens css, das zu jedem Browser passt, und nicht browserspezifisch – Alex
Ich benutze mehrere CSS-Dateien, dividiert durch Funktion. Es gibt eine globale, eine für das Seitenlayout, eine für die Menüs, eine für die Tab-Controls etc. Ich habe auch kaskadierte für Desktop und Mobile - nur eine wird angewendet. Und dann habe ich weitere kaskadierte zum Enthäuten nach Benutzerwunsch. Und ich wähle aus, welche basierend auf Seite, Plattform und Benutzer geladen werden sollen. Dafür ist PHP da.
- 1. Sollte ich mehrere kleine oder eine große Anwendungsdatenbank erstellen?
- 2. tiefes Autoencoder-Training, kleine Daten vs. große Daten
- 3. Schneller zu Malloc mehrere kleine Zeiten oder wenige große Zeiten?
- 4. Kleine große Abfrage mit Schleife?
- 5. eine große eine Tabelle mit 100 Spalte vs viele kleine Tabellen
- 6. Performance erstellen mehrere kleine Dateien
- 7. Viele kleine Dateien oder ein paar große?
- 8. brechen große String in kleine Strings
- 9. MariaDB UPDATE große Tabelle in kleine Stücke
- 10. Wie korrigieren kleine Software-Patches große Software?
- 11. Wie eine große Ansicht in kleine Ansichten in MVC
- 12. Große Puffergrößen spielt, kleine Größe nicht
- 13. Reporting-Funktion für eine kleine MVC App, VS 2015
- 14. Foundation verschiedenen Stil für kleine - mittlere - große
- 15. MongoDB Schema Design - Viele kleine Dokumente oder weniger große Dokumente?
- 16. CASE vs Mehrere UPDATE-Abfragen für große Datensätze - Leistung
- 17. Viele kleine Dateien Vs 1 große Datei für AWS S3 und Glacier:
- 18. IronPython vs. C# für kleine Projekte
- 19. Speicherverbrauch: viele kleine Sets vs verschmelzenden
- 20. Große und kleine Ticks mit V3 von D3?
- 21. NSNumberFormatter zeigt nur "E" für große/kleine Werte an?
- 22. Scheibe große WPF Canvas in viele kleine PNG-Bilder
- 23. Facebook Scraper Zeigt kleine kleine Icon Bild statt Große Banner Image
- 24. ASP.NET MVC - Mehrere kleine Apps zusammenführen
- 25. Benachrichtigungsleiste zeigt sowohl große als auch kleine Symbole
- 26. Machen Sie kleine und große Zahlen von Menschen lesbaren
- 27. Linearlayout Gewicht Ausgabe für große/kleine Länge Text für Textviews
- 28. Angular-Vorlage in mehrere kleine Vorlagen teilen
- 29. Design/Architektur: Web-Socket eine Verbindung vs. mehrere Verbindungen
- 30. Verarbeitung eine große Datenmenge
Wenige Dinge zu sagen: 1) Ich kann schwören, ich habe den ähnlichen Anfang Ihrer Frage zu einer anderen Frage des gleichen Typs gelesen. 2) Ich habe seit einiger Zeit Styling-Tools und ich mag weniger viel mehr als SaSS (Stylus ist übrigens auch super). 3) Ich verstehe, dass es bei der Entwicklung einfacher ist, mehrere CSS-Dateien zu verwenden und (wie ich bereits gesagt habe), dass es in der Produktion besser ist, nur eine zu verwenden. 4) Die Frage ist im Grunde: "Was ist effizienter - die große CSS-Datei mit Inhalt für jede Seite zu laden, am Anfang oder laden für jede Seite, es ist eine separate Datei, wenn nötig?" – Alex
Ich sehe, dass Sie grundsätzlich meine Frage beantwortet haben, sagen, dass es besser ist, eine große Datei für jede Seite auf der Website zu verwenden, aber bitte lesen Sie noch einmal den letzten Satz meiner Frage. Sind Sie sicher, dass es der effizienteste Weg ist? Weil eine der besten Webanwendungen (vk.com) Ajax verwendet, um CSS-Dateien zu laden, wenn ein Benutzer die Seite besucht und speichert sie dann in der Datei für den Fall, dass eine Person es wieder besuchen wird – Alex
@Alex bin ich mir nicht ganz sicher Ihre Frage, aber ich denke, Sie fragen nach der responsiven Website. In CSS können Sie Responsive Site basierend auf den Breakpoints (feste Größe basierend) oder Fluid (Prozentsatz basierend) haben. In CSS hätten Sie verschiedene Stilregeln für dieselben Elemente basierend auf diesen Haltepunkten. Ich würde vorschlagen, dass Sie eine andere Frage für dieses Thema erstellen, da diese Konversation für dieses Thema irrelevant ist und möglicherweise nicht hilfreich für Leute ist, die nach Hilfe zu dem Thema suchen. – Subash