【西天取经】(骚操作)net core静态文件增加版本号,支持CDN
【西天取经】net core静态文件增加版本号,支持CDN
关于net core实现给静态文件添加版本号的文章网上已经很多了,但是能够更好的支持CDN,或者说URL更符合SEO标准的文章却没有介绍,下面由我来说一下这都是怎么个意思?
net core默认给静态文件加版本号是通过URL中的query参数带上文件版本号的。
当前网站域名是crm.reportide.com,在同一个域名下的静态资源可以实现增加版本号的功能,如果静态资源和网站页面不在同一个域名下是实现不了的。微软目前只给我们大家做了第一步,实用不实用微软不管了。要用这个功能就得用同一个域名,要不你就别用这个功能。
asp-append-version="true" #就是这个东东,razor里面html标签的属性
而我偏偏就要用另外一个域名,并且版本号是放在URL的path里,不是query里。
当前网站的域名是sishot.reportide.com,CDN域名是另外一个cdn.reportide.com,这样带有path风格的版本号同时还支持CDN域名的才是做网站真正需要用到的方式。
为了实现URL的path里带上版本号,还支持CDN域名,就需要把.net core的源码拿出来一部分改吧改吧了。下面这一堆的******Ex.cs就是用到要改吧改吧的类。
说到这里,又想吐槽两句C#了,C#里面有protected和internal两个访问修饰符,还有virtual和override两个关键字,完全就是鸡肋的设计,假如没有这四件独门秘籍,还用得着把上面一大堆的*****Ex.cs类文件重写一遍吗?只需要重写你要改的类方法多直接多好啊。反观,java语言里就没有这些秘籍,可以直接继承类改吧改吧完事了。
最后C#把重写做完还不算完事,你还得把容器里面默认已经注入的原来那一套类给它去除掉,重新把你写的这一大堆*****.Ex.cs的类文件注入到容器里面后才算最后完工能用啦。
上面的URL截图里面我还标记使用了当前最流行的HTTP2协议和br内容编码方式,这些都是提高页面内容传输速度的基础配置。
先休息一下
未完待续