Da es beim Bündeln und Minimieren darum geht, Seiten zu optimieren und schneller zu laden, erscheint es mir logisch, ein Paket für Skripte und ein Paket für Stile pro Ansichtsbasis zu erstellen, damit ein Browser alle Skripte und Stile laden kann höchstens 2 Anfragen zu stellen. _Layout.cshtml
Nehmen wir also an, ich habe eine Datei bootstrap.js
, in der ich 3 JS-Dateien benötige , jquery.js
und in einigen custom1.js
kann ich ein Bundle erstellen, etwa so:
bundles.Add(new ScriptBundle("~/bundles/layout").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/jquery.js",
"~/Scripts/custom1.js"));
Nehmen wir an, ich habe eine andere Ansicht, User.cshtml
wo ich sie benötige bootstrap.js
, jquery.js
und custom2.js
erstelle erneut ein Bundle:
bundles.Add(new ScriptBundle("~/bundles/user").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/jquery.js",
"~/Scripts/custom2.js"));
Der gleiche Ansatz kann für Stilbündel verwendet werden. Soweit ich weiß, ist es jedoch nicht üblich, dies auf diese Weise zu tun. In der Regel werden Bundles auf Typbasis erstellt, z. B. eines für Bootstrap, eines für JQuery, eines für benutzerdefinierte JS / CSS-Dateien usw. Dies würde sich jedoch nicht erhöhen Die Ladezeit der Seite, da mehr Bundles mehr Anfragen an den Server bedeuten. Was ist auch das Problem, Dinge so zu machen, wie ich es am Anfang beschrieben habe?
quelle
Nein.
Durch das Zwischenspeichern von Browsern erzielen Sie die besten Gesamtergebnisse, wenn Sie auf allen Seiten dasselbe Bundle oder dieselben Bundles verwenden. Dies bedeutet, dass der Benutzer alle CSS und JS herunterlädt, wenn er auf die erste Seite gelangt, und diese Datei auf den folgenden Seiten wiederverwendet.
Da der Großteil des Bundles aus Javascript-Frameworks wie jquery und bootstrap besteht. Ihre zusätzlichen paar Bytes an benutzerdefiniertem Code wirken sich nur unwesentlich auf die Gesamtladegeschwindigkeit der Seite aus.
quelle
Der Nachteil eines Bundles pro Seite ist, dass das zwischengespeicherte Bundle von einer Seite nicht auf einer anderen Seite verwendet werden kann. Normalerweise möchten Sie, dass der Großteil Ihrer Skripte (z. B. jQuery-Bootstrap usw.) einmal heruntergeladen und für alle Seiten zwischengespeichert wird der Standort.
Die aus Caching-Sicht "optimale" Lösung wäre, ein einziges Bundle zu haben, das alle .js für alle Seiten auf der gesamten Site enthält. Der Nachteil dieses Ansatzes besteht darin, dass das Bundle ziemlich groß ist, was bedeutet, dass das anfängliche Laden der Seite langsamer ist Dies ist möglicherweise nicht wünschenswert für Websites mit Kundenkontakt, auf denen erste Eindrücke alles sind.
Die "beste" Lösung wird wahrscheinlich eine Mischung von Techniken sein, z
quelle