2010-11-30 7 views
3

Ich habe meine asp:ScriptManager Kontrolle mit ajaxToolkit:ToolkitScriptManager mit Attribut CombineScripts="true" ersetzt.ASP.NET Skript kombiniert

Nun, wenn ich Quelle der HTML-Seite zu sehen, gibt es neue Skript-Tag:

<script src="/MyPage.aspx?_TSM_HiddenField_=ctl00__pageBody_asScript_tscAjaxScripts_HiddenField&amp;_TSM_CombinedScripts_=%3b%3bAjaxControlToolkit%2c+Version%3d3.0.20820.30277%2c+Culture%3dneutral%2c+PublicKeyToken%3d28f01b0e84b6d53e%3aen-US%3a06e896ab-1f8c-4bcb-9cc4-0200671cba8a%3ae2e86ef9%3a1df13a87%3ac4c00916%3aaf22e781%3a9ea3f0e2%3ac7c04611%3acd120801%3a3858419b%3a96741c43%3a38ec41c0" /> 

Aber auch sind noch alte Script-Tags: WebResource.axd und mehrere ScriptResource.axd

Wie ich WebResource.axd und ScriptResource.axd Links entferne von der Seite?

+0

Haben Sie den Ratschlag hier? http://stackoverflow.com/questions/626659/combine-scripts-in-asp-net-ajax-toolkit –

+0

Ich lese es nur, aber es gibt keine Antwort wie entferne ich WebResource.axd und ScriptResource.axd Links – ihorko

+0

@ ihorko Versuchen Sie nicht, RegisterClientScriptResource in Ihrem Code aufzurufen. –

Antwort

0

Ich schrieb einen einfachen Handler für dieses, das scheint gut zu funktionieren, aber es ist für ASP.NET MVC, aber es sollte nicht so schwer sein, es für Webforms zu arbeiten. Ich habe es auf GitHub: https://github.com/mastoj/SimpleCompression.

Die guten Teile mit meiner Lösung sind:

  • Sie brauchen nicht zwei Kopien des Skripts; Das heißt, eine verkleinerte Version mit dem Original.
  • Sie können die Komprimierungs-Engine ändern, wenn Sie möchten.
  • Die Dateien werden im laufenden Betrieb komprimiert und in den Cache auf dem Webserver und dem Client gestellt (Sie können eine Versionseinstellung aktualisieren, um den Client zum erneuten Herunterladen des Skripts zu zwingen).
  • Die Dateien werden im laufenden Betrieb kombiniert.
  • Die kombinierte und komprimierte Datei hat Dateiabhängigkeit zu den ursprünglichen Dateien, so dass sie neu komprimiert und kombiniert werden, wenn Sie aus irgendeinem Grund etwas in prod testen müssen (aber tun Sie es nicht :)).
  • Und es ist einfach zu bedienen, zumindest für MVC.
0

Wenn Sie .NET 4.0 verwenden, können Sie das Attribut enablecdn im scriptmanager verwenden, und es wird der erforderliche JavaScript-Code aus dem CDN von Microsoft bereitgestellt.

Wenn nicht, können Sie sie immer noch als Scott Hanselman describes here zusammenführen. Sie können auch einen Schritt weiter gehen und ein HTTP-Modul/-Filter verwenden, um diese Skripte (WebResource.axd, ScriptResource.axd) in zwei oder drei zu kombinieren, jedoch benötigt es umfangreiche Kenntnisse der ASP.NET-Grundlagen; Oder sonst könnten Sie die Microsoft Ajax Methodenaufrufe in der App brechen (wegen dieser ausgefallenen Mechanismen, die UpdatePanel verwendet, um einen Teil der Seite zu aktualisieren, etc ...)

+0

sry ... Ich wollte nicht einen Kommentar schreiben, ich war dabei, eine Antwort zu schreiben :) –

1

Es gibt einige Komponenten des AjaxControlToolkit, die nicht tun Unterstützung beim Kombinieren von Skripten. Von: http://blogs.msdn.com/b/delay/archive/2007/06/11/script-combining-made-easy-overview-of-the-ajax-control-toolkit-s-toolkitscriptmanager.aspx

Die SliderBehavior.js Skript Slider eine ziemlich obskure Funktion verwendet aktiviert durch die Perform Eigenschaft der WebResource Attribut, das <% = WebResource/ScriptResource%> -Tags eingebettet werden können in JS-Dateien und erhalten gelöst, bevor das Skript an den Browser gesendet wird. Dieses Verhalten ist nicht unterstützt derzeit von ToolkitScriptManager

Es gibt keine magische Flagge Sie vollständig einschalten kann dieser Datei loswerden. Der Vorteil von ToolKitScriptManager besteht darin, dass die Anzahl der Ressourcen, die Ihre Seite benötigt, reduziert wird, was zu einer besseren Leistung führt. Die Dateien Webresource.axd und Scriptresouce.axd werden von der gesamten Anwendung und nicht nur von AjaxControlToolkit verwendet. Mein Rat wäre, ein Programm wie Fiddler zu verwenden, um zu sehen, welche Ressourcen die Scriptresource.axd und Webresource.axd tatsächlich von dort beziehen und arbeiten.

1

In diesem Szenario durch CombineScripts="true" von ajaxToolkit:ToolkitScriptManager Einstellung bedeutet dies auf dieser Seite von dem Ajax-Steuerelemente verwendet, um alle Skriptdateien kombinieren, und es wird das kombinierte Skript in der unten form-

<script src="/MyPage.aspx?_TSM_HiddenField_=ctl00__pageBody_asScript_tscAjaxScripts_HiddenField&amp;_TSM_CombinedScripts_=%3b%3bAjaxControlToolkit%2c+Version%3d3.0.20820.30277%2c+Culture%3dneutral%2c+PublicKeyToken%3d28f01b0e84b6d53e%3aen-US%3a06e896ab-1f8c-4bcb-9cc4-0200671cba8a%3ae2e86ef9%3a1df13a87%3ac4c00916%3aaf22e781%3a9ea3f0e2%3ac7c04611%3acd120801%3a3858419b%3a96741c43%3a38ec41c0" /> 

laden Aber in ScriptResource.axd Dateien wird es die Microsoft Ajax-Bibliothek Dateien wie - MicrosoftAjax.debug.js und MicrosoftAjaxWebForms.debug.js in separaten Anfrage laden. Sie können eine einzelne Anforderung für Microsoft Ajax durch das Kombinieren von ihnen erstellen.

können Sie verwenden <CompositeScript> Tag explizit und geben MicrosoftAjax.js, Webform.js und MicrosoftAjaxWebForms.debug.js sie in einem einzigen Antrag zu kombinieren. Auf diese Weise sehen Sie nur zwei Anforderungen für JS, eine für kombiniertes Skript der Ajax-Steuerelemente auf dieser Seite und eine andere für kombiniertes Skript MicrosoftAjax js