IIS的url-rewrite配置预压缩
发布日期:2021-06-29 14:39:40 浏览次数:2 分类:技术文章

本文共 2581 字,大约阅读时间需要 8 分钟。

参考:https://stackoverflow.com/questions/45199213/angulars-pre-gzipped-files-are-not-served-via-iis

参考:https://stackoverflow.com/questions/40884212/serve-bundle-js-gz-file-on-iis
参考:https://gist.github.com/suhrab/552af7b3383706081fbe51c102c290d7
参考:https://www.iis.net/downloads/microsoft/url-rewrite
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

Url-Rewrite是什么?

url-rewrite是网页服务器的一项功能:

  1. 入站规则:可以用于重写访问的url路径,可以把符合条件的请求的url路径路由到另一个url路径上去。
  2. 出站规则:可以根据一些条件,如消息的类型,修改返回消息的类型等内容。
    下面是官方的一段解释:
    IIS URL Rewrite 2.1 enables Web administrators to create powerful rules to implement URLs that are easier for users to remember and easier for search engines to find. By using rule templates, rewrite maps, .NET providers, and other functionality integrated into IIS Manager, Web administrators can easily set up rules to define URL rewriting behavior based on HTTP headers, HTTP response or request headers, IIS server variables, and even complex programmatic rules. In addition, Web administrators can perform redirects, send custom responses, or stop HTTP requests based on the logic expressed in the rewrite rules.

Url-Rewrite的安装

url-rewrite缺省是没有安装到IIS服务器上的,使用前,我们需要把它下载安装到电脑上。

可以在这个官方的下载路径上下载一个版本进行安装:
https://www.iis.net/downloads/microsoft/url-rewrite

Url-Rewrite配置预压缩

不同于nginx,IIS是没有支持静态预压缩的。

这里的静态预压缩指:把web服务器上的html/js等资源,使用gzip预先生成一份压缩数据,当请求过来的时候,优先返回这些gzip压缩的文件,这样可以显著的减少传输的数据量,提高传输效率。

实现策略

为了让IIS能够返回gzip压缩的文件,我们可以考虑使用url-rewrite功能。

1. 在请求入站时把请求的文件,添加gz压缩包后缀。目的是:让fetch文件时,直接把.gz的压缩文件对外返回。
2. 在出站时,需要把content-encoding置位gzip,另外也需要把content-type置位 application/octet-stream。置位这些的目的是:如果不修改标识,直接返回gzip文件,浏览器会认为客户请求的就是gzip文件,是要下载gzip文件;而修改标识后,浏览器会识别出这是请求文件的gzip压缩文件,使用前需要解压,浏览器会对它进行解压并传给网页程序进行使用。

配置样例

配置样例参考stackoverflow上的答复:

https://stackoverflow.com/questions/45199213/angulars-pre-gzipped-files-are-not-served-via-iis

在网站跟目录的的web.config文件中修改:

入站配置:识别js后缀的添加.gz后缀

 

出站配置:.gz后缀的content-encoding修改为gzip

经过上面的配置,就可以实现js文件的预压缩支持。

缺点分析

使用该种策略,一定程度可以在IIS上实现支持预压缩文件,不过毕竟不像nginx的支持,该种变通实现是有一定的副作用的,如果使用的话注意规避该副作用。

  1. 修改后不再找原路径:入站规则直接修改了请求的url,意为着,如果修改后的url路径文件不存在,就会返回404。如果请求不到.gz压缩文件,是不会找原不带.gz的请求文件的。
  2. gz后置被标识为encoding-type为gzip,浏览器收到后会进行解压,这对原来就请求下载gz文件的情况,进行了干扰。请求下载的gz文件,浏览器先解压了,理论上保存就是解压后的文件了。

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

转载地址:https://chunyexiyu.blog.csdn.net/article/details/100569200 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Opengl-DepthBuffer存储与还原
下一篇:Webgl-Render loop渲染循环的实现

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月14日 15时43分42秒