开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Signalr系列之虚拟目录详解与应用中的CDN加速实战

简介: 原文:Signalr系列之虚拟目录详解与应用中的CDN加速实战 目录 对SignalR不了解的人可以直接移步下面的目录 SignalR系列目录 前言 前段时间一直有人问我 在用SignalR 2.
+关注继续查看
原文:Signalr系列之虚拟目录详解与应用中的CDN加速实战

目录

对SignalR不了解的人可以直接移步下面的目录

SignalR系列目录

前言

前段时间一直有人问我 在用SignalR 2.0开发客服系统[系列1:实现群发通讯]这篇文章中的"/Signalr/hubs"这个虚拟目录到底是做什么的?

由于小弟当时也是一知半解所以很牵强,这段时间特意抽空详细了解了一番,分享如下:

正文

前面我们一直都说这个是一个虚拟目录,那么这个东西到底是来做什么的呢?

我们先解释一下:这个路径前面的/Signalr/是目前你所有的SignalR的Hub在客户端连接时所访问的服务地址,后面的"/hubs"则是将要下载的前端JS资源,当我们在Startup类中app.MapSignalR()注册SignalR的时候,这个地址将自动注册,当然也可以改成自定义的代码(对应的前端JS地址也需要更改为""GoJJSMD/hubs"")如下:

    public class OwinStartup
    {
        public void Configuration(IAppBuilder app)
        {
    //注册地址为"GoJJSMD" 
            app.MapSignalR("/GoJJSMD", new HubConfiguration());
        }
    }

效果如下:

 

看到这里,大家应该已经很明确了,其实就是在SignalR在收到第一个URL请求的时候会根据hub中的代码动态的创建一个JS脚本放在这个目录里面(注:这种动态创建只会在第一次访问时发生一次),

如下图,我们可以看到我们在Hub中所写的方法全部在自动生成的Hub.js中有代理项:

 

说到这里,大家应该很明确了,这个虚拟目录的作用其实就是在程序第一次被访问的时候自动根据被访问的Hub动态生成的JS脚本所存放的地方.

这样还是会有弊端,比如:生成的JS没有进行优化处理(去除空格多余的字符串什么的),也无法进行CDN加速..

那么,作为一个高端大气上档次的应用程序,在用户日益暴增的今天,在必须装逼装到位的当下!,必须使用CDN对自己的JS下载进行优化,是吧.(- -,哈哈哈...)

接下来我们就讲讲如何进行CDN加速

 

CDN加速优化

上面我们说过,这些JS都是自动生成,所以进行JS的最小化优化和CDN加速的时候就很困难.

那么有没有办法让这些JS手动生成,并且由我们来进行控制呢?答案是肯定的~

Signalr提供了手动生成的工具,需要Nuget下载,

在Nuget命令行中输入如下命令:

 Install-Package Microsoft.AspNet.SignalR.Utils

下载最新版本的Utils工具包

然后我们输入命令:

signalr ghp /path:SignalRApplication_Test/bin /o:SignalRApplication_Test/scripts/hubs.js

注意标红的地方,改为你自己的应用程序名称

这样我们就可以在Scripts/目录下看到一个叫hubs.js的文件了,如下图:

可以打开看看和之前自动生成的是一毛一样的.

那么这个JS怎么使用呢?

我们先修改前端的引用代码,如下:

<script src="Scripts/jquery-1.10.2.min.js"></script>
    <script src="Scripts/jquery.signalR-2.2.0.min.js"></script>    
    <script src="Scripts/hubs.js"></script>                                                                                                                                     
    <!--这里我们注释掉-->
    <!--<script src="GoJJSMD/hubs"></script>-->

 把虚拟目录注释掉,然后引入我们刚刚生成的Hub.js

接下来,修改Startup类中的配置如下:

    public class OwinStartup
    {
        public void Configuration(IAppBuilder app)
        {
    
            //配置自动生成JS代理为否
            app.MapSignalR(new HubConfiguration()
            {
                EnableJavaScriptProxies = false
            });
        
        }
    }

然后访问页面,会发现和之前的效果没有任何区别,这样就完成了对虚拟目录的替换工作.

既然已经获得了JS,那么获得JS之后,如何进行CDN加速如何进行优化...我就不谈了..你们懂的..

虽然到此,我们就已经可以进行自己的CDN加速了但是在开发的过程中,还是会很麻烦,每次修改hub都需要手动生成一次hubs.js

有没有简便的方法呢?,那必须的..

我们在项目目录下找找..

会发现如下程序:

在packages下找到SignalR.Utils中的tools里面有一个signalr的exe程序,这个就是生成Hubs.js的小工具啦~

为了简便,我们把他复制出来,放在项目中的signalr目录下,如图:

然后我们在应用程序上,右键,属性,如下:

选择生成事件,点击编辑后期生成事件,如下图:

 输入如下命令行:

$(ProjectDir)signalr\signalr.exe ghp path:$(TargetDir) /o:$(ProjectDir)Scripts/hubs.js

这样我们每当我们重新生成或者编译的时候就会自动更新Scripts下的hubs.js了..

至此,详解完毕..

 

写在最后

其实SignalR的功能不仅限于聊天,可能是国内的实例都是聊天的Demo所以有点限制大家的思维,大家可以想想,Signalr的时效性,其实还可以做事实的项目监控,同步的画板,甚至在HTML5下理论上完全是可以实现视频聊天的,希望大家多多支持小弟,谢谢,如果喜欢或者觉得有用,可以点一个赞,同时也欢迎大神吐槽.!小弟的Q:524808775

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云OSS传输加速和CDN有什么区别?
阿里云对象存储OSS传输加速和阿里云CDN的区别
31 0
阿里云CDN加速原理介绍
了解和学习CDN的工作原理非常重要,这对于网站优化、解决用户问题都有非常大的帮助。本文主要介绍了阿里云CDN的加速原理和缓存策略,举了一些实际的例子方便读者能清晰地理解阿里云CDN。
2088 0
手把手教你 WordPress 使用阿里云 CDN 教程,让你的网站飞起来
优化 WordPress 访问速度详细攻略,手把手教你优化过程
8164 0
阿里云CDN搬站第二期 运维及管理
CDN通过在现有网络中增加一层新的cache节点,将源站的内容发布到最接近用户的网络节点,使得客户端在请求时直接访问命中该资源,减少回源情况,提高网站访问速度,因此很多业务都需要使用CDN进行分发。因此本文就CDN的及优化策略提供思路,便于将业务切到CDN上来1、了解阿里CDN 阿里最初也是租用第三方 CDN,结果存在功能欠缺及不稳定等诸多问题,整个系统的 规模、性能、可用性和可管理性都不符合阿里的需求,为了满足更大规模的并发需求,阿里CDN也由此应运而生。
2490 0
【阿里云一周要闻第一期】阿里云数据库位列全球第三;《Java开发手册》正式发布;阿里云CDN实现毫秒级全网刷新
要闻预告:突破!阿里云CDN实现毫秒级全网刷新;Gartner宣布阿里云数据库位列全球前三!告别996,走向211!阿里巴巴内部研发效能36计课程对外啦!
13100 0
阿里云CDN的缓存策略是怎么运作的?
CDN是整个阿里云产品框架中是一个很重要的一环,因为它主要是在产品最外层,保证真实的客户在访问服务器端资源的时候能够有一个较好的体验。 那么CDN底层主要是通过什么样的手段去实现的呢?其实它就相当于在客户的就近的地区,布置了对应的节点,并且把对应的一些静态资源,比如说图片、视频等这些资源预先先缓存到对应的节点上。
1863 0
突破!阿里云CDN实现毫秒级全网刷新
通常在某网站使用了CDN节点来实现内容分发加速后,当源站内容更新的时候,CDN刷新系统会通过提交刷新请求将CDN节点上的指定缓存内容强制过期。当用户访问的时候,CDN节点将回源获取最新内容返回给用户,并在缓存节点更新资源。
5697 0
阿里云CDN领跑全球加速 618将普惠进行到底
技术进步和规模效应是普惠的关键因素,2019阿里云618《上云拼团接力赛》活动已于6月16日正式上线,CDN也作为爆款产品参与其中,全线预付费资源包8.5折优惠,力度空前。
1266 0
【省钱攻略】阿里云618上云拼团接力赛,云通信、CDN、物联网卡优惠最强解读
在本次618活动中,短信、CDN、物联网无线连接三款产品钜惠来袭,通过爆款抢购、优享折扣、全站满返、集赞赢奖等多重优惠,助力企业迈开上云重要一步。下面为大家整理准备了一份攻略。
4297 0
【技术干货】听阿里云CDN安防技术专家金九讲tengine+lua开发
系统介绍tengine的安装、运行和开发,全文包含大量代码示例,由阿里云CDN安防技术专家金九撰写。
4497 0
+关注
杰克.陈
一个安静的程序猿~
10424
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载