2015-07-08 24 views
5

sto usando signalr nella mia app e sto farvi riferimento in questo modo:Minify il file signalr/hub

<script src="/signalr/hubs" type="text/javascript"></script>

Naturalmente signalr viene generato javascript dinamicamente al volo. Quando eseguo yslow per migliorare le prestazioni della mia applicazione web, si lamenta che Singalr/Hubs non è minimizzato. Sicuramente quando clicco sul link mostra il js, piccolo campione frammento:

/*! 
* ASP.NET SignalR JavaScript Library v2.1.1 
* http://signalr.net/ 
* 
* Copyright Microsoft Open Technologies, Inc. All rights reserved. 
* Licensed under the Apache 2.0 
* https://github.com/SignalR/SignalR/blob/master/LICENSE.md 
* 
*/ 

/// <reference path="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> 
/// <reference path="jquery.signalR.js" /> 
(function ($, window, undefined) { 
    /// <param name="$" type="jQuery" /> 
    "use strict"; 

    if (typeof ($.signalR) !== "function") { 
     throw new Error("SignalR: SignalR is not loaded. Please ensure jquery.signalR-x.js is referenced before ~/signalr/js."); 
    } 

    var signalR = $.signalR; 

    function makeProxyCallback(hub, callback) { 
     return function() { 
      // Call the client hub method 
      callback.apply(hub, $.makeArray(arguments)); 
     }; 
    } 

    function registerHubProxies(instance, shouldSubscribe) { 
     var key, hub, memberKey, memberValue, subscriptionMethod; 

Come posso minify questo file se è generata automagicamente?

Modifica

Vorrei anche chiarire che sto usando lcsk che può essere trovato here, che utilizza signalr. In questo pacchetto c'è un file startup.cs che assomiglia a questo:

using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartup(typeof(RIMS.LCSK.Startup))] 

    namespace RIMS.LCSK 
    { 
     public class Startup 
     { 
      public void Configuration(IAppBuilder app) 
      { 
       app.MapSignalR(); 
      } 
     } 
    } 

ho bisogno di dire in qualche modo a minify a questo punto? Ho visto questo:

SignalR hub.js minify (ma questo sembra essere utilizzando un file Global.asax) E ho visto anche questo:

https://github.com/SignalR/SignalR/issues/2403

Ma sono incerti dove ho bisogno di fai tutto ciò con ciò che ho.

risposta

1

Controlla il extensibility guide. Elenca un'interfaccia IJavaScriptMinifier che puoi implementare per fare ciò che stai cercando. (E magari accoppiarlo con la libreria Optimization/Bundling o un altro minifier di terze parti).

+1

Ho visto che, vedere la mia modifica, tuttavia non sono sicuro nemmeno dove implementare questa interfaccia. Puoi guardare le mie modifiche per vedere i miei problemi? – JonH

1

Come la guida all'estensibilità suggerisce di implementare lo IJavaScriptMinifier che consiste in un solo metodo Minify. Successivamente, fornire la classe di implementazione IJavaScriptMinifier allo SignalR dependency injection pipeline e SignalR si prenderà cura dell'uso del minificatore quando necessario.

Ecco un esempio di una classe che implementa IJavaScriptMinifier, dove Minifier è Microsoft Ajax Minifier.

public class SignalrJavascriptMinifier : IJavaScriptMinifier 
{ 
    public string Minify(string source) 
    { 
     return new Minifier().MinifyJavaScript(source); 
    } 
} 
Problemi correlati