2009-04-30 3 views
1

Das ist ziemlich ärgerlich. Ich versuche eine sehr große Website zu optimieren, und ich bin dabei, HTTP-Anfragen zu reduzieren. Microsoft kooperiert nicht. Ich habe die folgenden ScriptResources eingeschlossen. Ich werde versuchen, eine Top-Linie für jeden greifen sieWie kann ich das Microsoft AJAX Toolkit optimieren?

  1. // Name zu unterscheiden: MicrosoftAjax.debug.js 53.5Kb
  2. // Name: MicrosoftAjaxWebForms.debug.js 14Kb
  3. AjaxControlToolkit. BoxSide = function() {11.4Kb
  4. /// Sys.UI.DomElement 958 Bytes!
  5. // Sys.Timer 982 Bytes!
  6. // IDropSource 6,5 kb
  7. AjaxControlToolkit.FloatingBehavior = function (element) {2,2 Kb
  8. AjaxControlToolkit.BehaviorBase = function (element) {5.4Kb
  9. AjaxControlToolkit.DynamicPopulateBehavior = function (element) {2,9 Kb
  10. AjaxControlToolkit.BoxCorners = function() {3,6 kb
  11. AjaxControlToolkit.DropShadowBehavior = function (element) {3,4 kb
  12. AjaxControlToolkit.ModalPopupBehavior = function (ELE ment) {5.5Kb

Komm schon! 12 Bloody Javascript beinhaltet! Weniger als ein Kilobyte! Die Hälfte der Zeit, um die Dang-Daten zu bekommen, wird wahrscheinlich damit verbracht, danach zu fragen! ARGHHH!

Wie auch immer, wie Sie sehen können, bin ich genervt. Gibt es eine Möglichkeit, diese aufzurollen und zu kombinieren? Wie in eine Anfrage?

+1

Was meinst du, "wahrscheinlich"? Sie haben bestimmt gemessen, wie viel Zeit Sie damit verbringen, auf diese Daten zu warten? Andernfalls verschwenden Sie Ihre Zeit zu optimieren. ;) – jalf

Antwort

3

Sie können ein HTTPModule schreiben, um alle axd/js-Dateien aus der Antwort zu erfassen, sie zu einem zusammenzufassen und sie über eine Anfrage an einen HTTPHandler an den Client-Browser zu senden.

Sie können einen Blick auf Mads Kristensen's Website zu wissen, wovon ich spreche. Es gibt viele Artikel/Problemumgehungen für Probleme wie Ihre.

1

Check this:

Fast ASP.NET web page loading by downloading multiple javascripts in batch

Auch ein häufiger Fehler setzt <compilation debug=”true”/> in einigen der Seiten, die ich gesehen habe. Wie pro Scott Gu,

Wenn <compilation debug=”false”/> gesetzt ist, automatisch die WebResource.axd Handler eine lange Cache-Richtlinie auf Ressourcen gesetzt wird über sie abgerufen - so dass die Ressource nur einmal auf den Client heruntergeladen und dort für immer im Cache gespeichert (es wird auch auf jedem dazwischenliegenden Proxy-Server zwischengespeichert werden).

0

Die Frage ist, wie die gesamten Anforderungen an Ihren Server ....

persönlich zu minimieren, ich denke, es ist kein Problem, wenn diese js Dateien einmal geladen werden. , weil sie vom Client zwischengespeichert werden sollten. Vielleicht willst du untersuchen, warum das nicht passiert. und zweitens ein Tag dort an dem Script ist, dass schränkt die js Dateien .... vielleicht haben Sie in den CompositeScript Tag aussehen wollen ...

addditionally würde ich in das LoadScriptsBevoreUI Attribut suchen empfehlen, und setzen Sie sich auf falsch. dann wird dein Inhalt vor den Javascripts geladen.

+1

Es kann eine echte PITA sein, wenn du erst einmal darauf gestoßen bist. Stellen Sie sich eine Webanwendung vor, die hauptsächlich von Personen mit 3G-Datenkarten verwendet wird. Latenz & Handsake-Zeit ist Mist mit diesen Karten. Und Browser unterstützen nur 2 gleichzeitige Anfragen, so dass diese Art von Müll kann die "Geschwindigkeit" einer Seite Download unter bestimmten Bedingungen –

+0

ersten Download massiv reduzieren. erster Händedruck. Ja. Anschließend können Sie Prüfungen auf dem Server vermeiden, wenn Sie das Ablaufdatum der Dateien auf ein Jahr setzen und Ihre Versionsnummer dem Dateinamen hinzufügen. neue Version -> neue URL. – cRichter

0

Verwenden CombineScripts = true in Ihrem ToolkitScriptManager