缩小signalr / hubs文件

时间:2015-07-08 19:55:08

标签: javascript asp.net signalr minify

我在我的应用程序中使用signalr并且正如此引用它:

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

当然,signalr是动态生成的javascript动态。当我运行yslow来改善我的Web应用程序的性能时,它抱怨singalr / hubs没有缩小。当我点击链接时,它会显示js,小片段样本:

/*!
 * 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;

如果这个文件是自动生成的,我如何缩小它?

修改

我还要澄清我正在使用lcskusing Microsoft.Owin; using Owin; [assembly: OwinStartup(typeof(RIMS.LCSK.Startup))] namespace RIMS.LCSK { public class Startup { public void Configuration(IAppBuilder app) { app.MapSignalR(); } } } 可以找到here,它使用信号器。在这个包中有一个startup.cs文件,如下所示:

ini_set('max_execution_time', 0);
ignore_user_abort(true);
set_time_limit(0);

我是否需要以某种方式告诉它在这一点上缩小?我见过这个:

SignalR hub.js minify(但这似乎是使用了global.asax文件)而且我也看到过:

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

但是我不确定我需要在哪里做我所拥有的。

2 个答案:

答案 0 :(得分:1)

查看extensibility guide。它列出了一个IJavaScriptMinifier界面,您可以实施该界面来执行您正在寻找的内容。 (也许可以将它与优化/捆绑库或其他第三方缩小器结合使用。)

答案 1 :(得分:1)

正如可扩展性指南所示,您应该实现IJavaScriptMinifier,其中只包含一个Minify方法。然后,将IJavaScriptMinifier实施课提供给SignalR dependency injection pipeline,SignalR将在需要时使用缩放器。

以下是实施IJavaScriptMinifier的类的示例,其中MinifierMicrosoft Ajax Minifier

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