ich komprimieren meine eigene JS mit YuiCompressor, aber gibt es einen Grund, warum MicrosoftAjax.js nicht minimierte? Oder gibt es eine Einstellung zu sagen, die komprimierte Version davon auszuführen (wenn es eine komprimierte Version gibt). Oder muss ich es dekompilieren und die Skript-Ressource selbst minimieren?Gibt es einen Grund, warum MicrosoftAjax.js nicht minimiert wird?
Antwort
ich diese irreführenden Antworten überrascht bin.
ASP.NET AJAX hat immer sowohl Debug- und komprimierte Versionen von MicrosoftAjax.js zur Verfügung gestellt. Eine Kombination aus der debug-Einstellung von web.config und ScriptManager's ScriptMode property steuert, auf welches Skript verwiesen wird.
Darüber hinaus können Sie the "retail" setting verwenden, um komprimierte Skripts unabhängig davon zu erzwingen.
Danke für diesen Dave. Gut zu wissen. – nickytonline
Brilliant, hatte ich keine Ahnung über die "Einzelhandel" -Einstellung, unser Unternehmen hat eine Angewohnheit, Sachen in der Produktion noch im Debug-Modus usw. zu implementieren. – Matt
Ich kann nur annehmen, dass es zum besseren Verständnis, wie sie ist gelassen worden, und wie Sie bereits angedeutet haben, ich sehe Grund, warum Sie es selbst nicht komprimieren können, ist es nur JavaScript nachdem alle - Obwohl MS Vielleicht magst du es anders zu glauben, sie streuen es nicht mit magischen Feenstaub um es anders zu machen! :)
[Und seien wir ehrlich; MS haben nie Angst vor der Größe ihres Codes, haben sie?]
EDIT: In meiner Verteidigung, zum Zeitpunkt des Schreibens dieser Antwort hatte ich keine Erfahrung mit .NET 3.5; Ich weiß jetzt, dass sie in diesem Bereich einige dringend benötigte Verbesserungen vorgenommen haben.
Offenbar fühlt MS nicht, dass die Größe der JavaScript-Datei sehr wichtig ist (was verrückt ist). Basierend auf meiner Erfahrung mit MS Ajax injizieren sie außerdem mehrere SCRIPT-Tags (manchmal mehr als 10) in das Markup. Diese Tags enthalten Skripts von einem WebResource.axd-Handler. Also müssen zehn oder mehr Anfragen gemacht werden, nur um das nötige Javascript zu bekommen, um die Seite zu starten! Um der Lächerlichkeit noch etwas hinzuzufügen, fügen sie einen verrückten Abfrage-String in die Handler-URL ein, was wahrscheinlich verhindert, dass das Skript vom Browser zwischengespeichert wird.
Dieser Wahnsinn war Grund genug für mich MS Ajax vollständig zu Graben und wechseln Sie zu jQuery, die weit bessere Bibliothek ist, besonders seit Visual Studio now has Intellisense for jQuery.
Wer hat diese Antwort abgelehnt und warum? –
Nicht sicher, up vote von mir, weil ich Ihre Sicht auf ASP.NET Ajax teile. –
Ich wurde auch abgelehnt - vielleicht haben wir einen MS-Mitarbeiter auf SO? :) Ich wünschte, down-Wähler würden erklären, warum sie so gewählt haben ... – CJM
Welche würden Sie lieber:
- MicrosoftAjax.js komprimiert kommt, schon verschleiert.
- MicrosoftAjax.js kommt unkomprimiert und offen, so dass Sie es selbst lesen und verstehen können.
warum nicht beides? jQuery kommt in beiden, oder? –
Während es trivial wäre, beide Versionen zu haben, und ziemlich nützlich, wenn Sie den einfachen Ausweg nehmen würden, sollten Sie die unkomprimierte Version bereitstellen. +1, weil dies kein Down-Voting verdient hat. – CJM
@Neil N. Ich stimme zu, warum nicht beides? Verwenden Sie bei der Entwicklung unkomprimiert und in prod die verkleinerte/verschleierte Version. – nickytonline
Siehe http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx, können Sie die
enableScriptMinification="true"
Option benötigen und fügen Sie MicrosoftAjax.js zur Liste
Ich habe diesen Artikel schon einmal gelesen, aber danke, dass du ihn hier geschrieben hast. Was ich suchte, war eine Out-of-the-Box-Lösung von Microsoft Ajax. Sieht aus wie DIY ist der Weg, um dies zu gehen. – nickytonline
Alle Skripte in System.Web.Extensions werden minimiert - es gibt zwei Versionen von jedem, wie Dave Wards ausgezeichnete Antwort darauf hinweist. ScriptManager verwendet standardmäßig die Debug-Version, wenn sich die web.config im Debug-Modus befindet. Drehe es um, um es mit der Einstellung für den Einzelhandel zu veröffentlichen, oder debugge = "false", und sieh dir dann das Skript an. Auch
diente Skripte durch WebResourceHandler oder ScriptResourceHandler sind in der Tat im Cache gespeichert.Sie werden auf die bestmögliche Weise zwischengespeichert - für immer, also brauchen sie nicht einmal bei zukünftigen Besuchen. Der Querystring ist so wie er ist, da er verschlüsselte Daten enthält. Es ist verschlüsselt, da es Informationen über die Skript-Ressource enthält, einschließlich eines Assemblynamens, und auch, weil es Cache-Flooding-Angriffe verhindert.
Nicht auf der Suche nach rep hier, wollte nur mehr Details geben.
Gut zu wissen, die WebResourceHandler oder ScriptResourceHandler zwischengespeichert werden. Ich nehme also an, wenn Sie Änderungen vornehmen und erneut bereitstellen, werden diese erneut zwischengespeichert, aber als unterschiedliche Dateien, weil sich der verschlüsselte Querystring geändert hat? – nickytonline
Yup. Jede Änderung an der Ressource ändert die Abfragezeichenfolge, was zu einem neu zwischengespeicherten Objekt führt. Auch habe ich nicht erwähnt, dass die Skripte auch gzip komprimiert sind. – InfinitiesLoop
- 1. Gibt es einen Grund, warum JavaScript-Entwickler Array.push() nicht verwenden?
- 2. Gibt es einen Grund, warum bestimmte Websites keine Passwörter zulassen?
- 3. Gibt es einen Grund, warum es nicht std :: identity in der Standardbibliothek gibt?
- 4. Gibt es einen Grund, PHP's exec() nicht zu benutzen?
- 5. Gibt es einen Grund, System.Uri zu verwenden?
- 6. Gibt es einen Grund, warum ich einen CALayer nicht außerhalb einer UIView-Klasse initialisieren kann?
- 7. Gibt es einen Grund, warum jQuery.each nicht auf Array.forEach angewiesen ist, wenn es verfügbar ist?
- 8. Gibt es einen Grund, warum Multithread-App für immer Schleife wird, wenn Win7 Bildschirm gesperrt ist?
- 9. Gibt es einen Grund, `new object(). Foo()` nicht zu verwenden?
- 10. Gibt es einen Grund, warum das CSS "clear: both" nicht für <a> Tags funktioniert?
- 11. Gibt es einen guten Grund, warum die # Region und # Endregion nicht funktioniert in F #
- 12. Gibt es einen Grund, warum MySQL FULL OUTER JOINS nicht unterstützt?
- 13. Gibt es einen Grund, warum DeployBot den aktuellen Symlink-Ordner nicht aktualisiert?
- 14. Gibt es einen Grund, warum fopen() nach mehreren hundert Öffnen nicht funktioniert?
- 15. Gibt es einen Grund, warum wir Typen mit DataKinds nicht füllen können?
- 16. Gibt es einen Grund, das Zeichenfolgenmodul in Python zu importieren?
- 17. Gibt es einen Grund, verschachtelte Aufrufe von $ (jQuery) zu haben?
- 18. Gibt es einen guten Grund für Javascript inline zu sein
- 19. Gibt es einen tieferen typentheoretischen Grund, warum GHC diesen Typ nicht ableiten kann?
- 20. Gibt es einen Grund, warum Lambdas mit einer leeren Capture-Liste nicht standardmäßig erstellt werden können?
- 21. Gibt es einen Grund, warum die azure-api-Verwaltung SOAP-Dienste nicht verfügbar macht?
- 22. Gibt es einen bestimmten Grund, warum verschachtelte Namespace-Deklarationen in C++ nicht zulässig sind?
- 23. Gibt es einen Grund, warum Sie nicht ssh und smart HTTP-Zugriff mit git mischen sollten?
- 24. Gibt es einen technischen/konzeptionellen Grund, warum iOS Cocoa Bindings nicht unterstützt?
- 25. Gibt es einen Grund, warum ich NVARCHAR nicht in Sql Server verwenden sollte?
- 26. Gibt es einen guten Grund, warum wir das Google API SDK nicht immer verwenden sollten?
- 27. Gibt es einen Grund für diese Art von For-Schleife?
- 28. Gibt es einen Grund, dass Cassandra keine geospatiale Unterstützung hat?
- 29. Gibt es einen Grund, einen geplanten NSTimer beizubehalten, wenn Sie ihn nicht ungültig machen müssen?
- 30. OnLoginError: Codes für den Grund, warum gab es einen Fehler
+1 Gute Frage! –
Nun von den Antworten, die ich bekam, scheint es nicht zu sein, eine minimierte/komprimierte Version von MicrosoftAjax.js out of the box zu bekommen. Es sieht also so aus, als wäre DIY das Mittel der Wahl, wie ich in der Antwort erwähnt habe. Wie ich zu Josh erwähnt, können Sie in ASP.NET 3.5 jetzt Skripts http://msdn.microsoft.com/en-us/library/cc488552.aspx kombinieren. Wir sind noch nicht auf 3.5 migriert, aber wenn wir das tun, werde ich es überprüfen. Ich habe gemischte Kritiken darüber gelesen. Außerdem habe ich jQuery vor einer Weile dem Projekt hinzugefügt, so dass ich langsam alles jQuerifiziere, was jQuerifiziert werden kann. – nickytonline
Mein Kommentar oben ist nicht mehr wahr. Dave Wards Antwort ist die gute, also keine DIY. – nickytonline