95992828九五至尊2

NET网站性能的部分办法,不改动代码就能优化ASP九五至尊ii

三月 8th, 2019  |  九五至尊ii

不修改代码就能优化ASP.NET网站品质的一部分格局

 

翻阅目录

读书目录

正文将介绍一些艺术用于优化ASP.NET网站质量,这个点子都以不供给修改程序代码的。
它们首要分为1个方面:

正文将介绍部分方法用于优化ASP.NET网站品质,这一个措施都以不必要修改程序代码的。
它们重要分为1个方面: 1. 用到ASP.NET本人的扩充性实行优化。 2.
优化IIS设置。

  1. 选择ASP.NET本身的扩充性进行优化。
  2. 优化IIS设置。

回去顶部

 

配置OutputCache

用缓存来优化网站质量的主意,估摸是家弦户诵的。
ASP.NET提供了HttpRuntime.Cache对象来缓存数据,也提供了OutputCache指令来缓存整个页面输出。
就算OutputCache指令使用起来更有利,也有12分好的作用,
可是,它需求大家在那三个页面中加上那样二个指令。

对此设置过OutputCache的页面来说,浏览器在收到那类页面包车型地铁响应后,会将页面响应内容缓存起来。
只要在钦定的缓存时间之内,且用户并未强制刷新的操作,那么就一贯不会再次呼吁服务端,
而对于来自其余的浏览器发起的请求,假设缓存页已变更,那么就能够直接从缓存中一呼百应请求,加速响应速度。
由此,OutputCache指令对于质量优化来说,是很有意义的(除非全数页面页面都在一连更新)。

在网站的优化阶段,大家能够用Fiddler之类的工具找出局地内容大概不会变动的页面,给它们设置OutputCache,
不过,依照古板的花费流程,大家供给针对各样页面文件执行以下操作: 1.
签出页面文件。 2. 添加OutputCache指令。 3. 重新发布页面。 4.
签入文件(若是赶上多分支并行,还只怕供给统一操作)。
如上那个源代码管理制度会让一个简单易行的事务复杂化,那么,有没一种更简便的法子能缓解这些标题吗?

接下去,本文将介绍一种办法,它选拔ASP.NET本人的扩大性,以布置文件的艺术为页面设置OutputCache参数。
配置文件别的就是三个XML文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<OutputCache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Settings>
        <Setting Duration="3" FilePath="/Pages/a3.aspx"  />
        <Setting Duration="10" FilePath="/Pages/a5.aspx"  />
    </Settings>
</OutputCache>

看了那段配置,我想你应该也能猜到它能有啥意义。

每一行配置参数为贰个页面钦命OutputCache所须要的参数,
示例文件为了不难只利用一个参数,其它能够帮衬的参数请参考OutputCache指令

为了能让那个布局文件有效,须要在web.config中配置以下内容(适用于IIS7):

<system.webServer>
    <modules>
        <add name="SetOutputCacheModule" type="WebSiteOptimize.SetOutputCacheModule, WebSiteOptimize" />
    </modules>
</system.webServer>

在那边,我登记了二个HttpModule,它的任何代码如下:

public class SetOutputCacheModule : IHttpModule
{
    static SetOutputCacheModule()
    {
        // 加载配置文件
        string xmlFilePath = Path.Combine(HttpRuntime.AppDomainAppPath, "OutputCache.config");
        ConfigManager.LoadConfig(xmlFilePath);
    }

    public void Init(HttpApplication app)
    {
        app.PreRequestHandlerExecute += new EventHandler(app_PreRequestHandlerExecute);
    }

    void app_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        HttpApplication app = (HttpApplication)sender;

        Dictionary<string, OutputCacheSetting> settings = ConfigManager.Settings;
        if( settings == null )
            throw new ConfigurationErrorsException("SetOutputCacheModule加载配置文件失败。");

        // 实现方法:
        // 查找配置参数,如果找到匹配的请求,就设置OutputCache
        OutputCacheSetting setting = null;
        if( settings.TryGetValue(app.Request.FilePath, out setting) ) {
            setting.SetResponseCache(app.Context);
        }
    }

ConfigManager类用于读取配置文件,并启用了文本重视技术,当配置文件更新后,程序会活动重新加载:
九五至尊ii 1

internal static class ConfigManager
{
    private static readonly string CacheKey = Guid.NewGuid().ToString();

    private static Exception s_loadConfigException;
    private static Dictionary<string, OutputCacheSetting> s_settings;

    public static Dictionary<string, OutputCacheSetting> Settings
    {
        get{
            Exception exceptin = s_loadConfigException;
            if( exceptin != null )
                throw exceptin;

            return s_settings;
        }
    }

    public static void LoadConfig(string xmlFilePath)
    {
        Dictionary<string, OutputCacheSetting> dict = null;

        try {
            OutputCacheConfig config = XmlHelper.XmlDeserializeFromFile<OutputCacheConfig>(xmlFilePath, Encoding.UTF8);
            dict = config.Settings.ToDictionary(x => x.FilePath, StringComparer.OrdinalIgnoreCase);
        }
        catch( Exception ex ) {
            s_loadConfigException = new System.Configuration.ConfigurationException(
                "初始化SetOutputCacheModule时发生异常,请检查" + xmlFilePath + "文件是否配置正确。", ex);
        }


        if( dict != null ) {
            // 注册缓存移除通知,以便在用户修改了配置文件后自动重新加载。

            // 参考:细说 ASP.NET Cache 及其高级用法
            //          http://www.cnblogs.com/fish-li/archive/2011/12/27/2304063.html
            CacheDependency dep = new CacheDependency(xmlFilePath);
            HttpRuntime.Cache.Insert(CacheKey, xmlFilePath, dep,
                Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, CacheRemovedCallback);
        }

        s_settings = dict;
    }


    private static void CacheRemovedCallback(string key, object value, CacheItemRemovedReason reason)
    {
        string xmlFilePath = (string)value;

        // 由于事件发生时,文件可能还没有完全关闭,所以只好让程序稍等。
        System.Threading.Thread.Sleep(3000);

        // 重新加载配置文件
        LoadConfig(xmlFilePath);
    }
}

有了AutoSetOutputCacheModule,大家就足以从来动用布置文件为页面设置OutputCache参数,而不供给修改任何页面,是或不是很容易选取?

说明:MyMVC框架已扶助那种成效,全体有关的能够从MyMVC框架的源码中赢得。

建议:对于部分很少改变的页面,缓存页是一种很实用的优化措施。

再次来到顶部

配置OutputCache

启用内容过期

各种网站都会有一部分资源文件(图片,JS,CSS),这几个文件相对于ASPX页面来说,
它们的输出内容极有只怕在一段长时间之内不会有生成,
而IIS在响应那类财富文件时不会生成Cache-Control响应头。
在那种情状下,浏览器只怕会缓存它们,也许会再度发起呼吁(比如重启后),综上说述正是缓存行为不受控制且缓存时间非常短久。

有没有想过能够把它们在浏览器中长久缓存起来吧?

为了告知浏览器将那一个文件长久缓存起来,收缩部分空洞的请求(升高页面呈现速度),我们得以在IIS中启用内容过期,
那样设置后,IIS就能生成Cache-Control响应头,显明报告浏览器将文件缓存多短期。

在IIS6中,那些参数很好找到:
九五至尊ii 2

不过,在IIS7中,这一个参数不不难被发觉,必要以下操作才能找到:
选拔网站(如故网站子目录)节点,双击【HTTP响应标头】
九五至尊ii 3

再点击左侧的【设置常用标头】链接,
九五至尊ii 4

那会儿将会显得: 九五至尊ii 5

说明:【启用内容过期】那些装置能够依据整个网站,也能够针对子目录,只怕1个具体的文本。

注意:若果你在IIS7中针对有些子目录只怕文件设置【启用内容过期】,前边的对话框看起来是一模一样的,
不过,在IIS6中,大家能够知晓地从对话框的标题栏中级知识分子道大家在做怎么样:
九五至尊ii 6

偶然真感觉IIS7的界面在倒退!

终极自身想说一句:能够一贯为一切网站启用内容过期,ASPX页面是不会被缓存的!

说到那边只怕有人会想:那几个过期时间本人该装置多长期呢?
十分钟,1个小时,一天,依旧7个月? 以小编之见,那个时刻越久越好。
只怕有人又会说了:万一小编要提拔有些JS文件怎么做,时间设置久了,用户怎么翻新呢?
借使您问小编这几个标题,笔者也不得不算得你的代码不客观(究竟你消除不了升级难点),想精晓原因来说,请继续阅读。

回来顶部

用缓存来优化网站质量的法子,估摸是远近驰名的。
ASP.NET提供了HttpRuntime.Cache对象来缓存数据,也提供了OutputCache指令来缓存整个页面输出。
即使OutputCache指令使用起来更有益于,也有相当好的功能,
可是,它必要我们在那多少个页面中加上那样二个发令。

缓解能源文件升级问题

对于一些规模十分的小的网站的话,平时会将财富文件与程序文件一起安插到四个网站中。
那时可能会利用上面包车型地铁不二法门来引用JS恐怕CSS文件:

<link type="text/css" href="aaaa.css" rel="Stylesheet" />
<script type="text/javascript" src="bbb.js"></script>

在那种气象下,要是选择了眼下所说的【启用内容过期】方法,那么当有JS,CSS文件必要升级时,
由于浏览器的缓存还不曾过期,所以就不会呈请服务器,此时会选取已缓存的版本,
因而恐怕会冒出各样意料之外的BUG

对于眼下谈到的BUG,小编觉得根源在于引用JS,CSS文件的艺术有通病,
那种办法完全没有考虑到版本升级难点, 正确的法子有三种: 1.
给文件名添加版本号,像jquery那样,各个版本3个文书(jquery-1.4.4.min.js)。

  1. 在U宝马X5L前边添加一个本子号,让原来的URL失效。

先是种格局由于每趟升级都产生了二个新文件,所以不设有缓存难点,然则,维护一大堆文件的工本大概会相比大,
因而笔者指出利用第三种办法来消除。

MyMVC的演示代码中,小编使用了上面包车型客车艺术来引用那些能源文件:

<%= HtmlExtension.RefCssFileHtml("/css/StyleSheet.css")%>
<%= HtmlExtension.RefJsFileHtml("/js/MyPage/fish.js")%>

在页面运转时,会生出如下的出口结果:

<link type="text/css" rel="Stylesheet" href="/css/StyleSheet.css?_t=634642185820000000" />
<script type="text/javascript" src="/js/MyPage/fish.js?_t=634642154020000000"></script>

那二个工具方法的落成代码如下(在MyMVC的演示代码中):
九五至尊ii 7

private static readonly string s_root = HttpRuntime.AppDomainAppPath.TrimEnd('\\');

public static string RefJsFileHtml(string path)
{
    string filePath = s_root + path.Replace("/", "\\");
    string version = File.GetLastWriteTimeUtc(filePath).Ticks.ToString();
    return string.Format("<script type=\"text/javascript\" src=\"{0}?_t={1}\"></script>\r\n", path, version);
}

public static string RefCssFileHtml(string path)
{
    string filePath = s_root + path.Replace("/", "\\");
    string version = File.GetLastWriteTimeUtc(filePath).Ticks.ToString();
    return string.Format("<link type=\"text/css\" rel=\"Stylesheet\" href=\"{0}?_t={1}\" />\r\n", path, version);
}

地点那种获取文件版本号的主意,是一种比较简单的解决方案。
每一种引用的地点在生成HTML代码时,都会访问文件的末尾修改时间,那会给磁盘带来一点读的开销,
要是您担心那种完毕格局只怕会给品质带来影响,那么也可以扩充三个布署文件的方法来消除(请自行实现),
例如以下结构:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfFileVersion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <FileVersion FilePath="/js/JScript.js" Version="255324" />
    <FileVersion FilePath="/css/StyleSheet.css" Version="2324235" />
</ArrayOfFileVersion>

一旦你认为那种布局文件要求手工业维护,不够自动化,还足以选用程序的方法自行在运行时保卫安全三个列表,
不问可见,直接引用财富文件的办法是一种直接耦合,会给文件升级带来劳动,
大家能够通过一个外表方法来解开这几个一贯耦合(给FileVersion扩大一个属性还还能将内部地址改成一个CDN地址)。

回来顶部

对于设置过OutputCache的页面来说,浏览器在接受那类页面包车型客车响应后,会将页面响应内容缓存起来。
只要在钦赐的缓存时间之内,且用户没有强制刷新的操作,那么就根本不会再次请求服务端,
而对于来自其它的浏览器发起的呼吁,假若缓存页已变更,那么就足以一贯从缓存中一呼百应请求,加速响应速度。
因而,OutputCache指令对于质量优化来说,是很有含义的(除非全体页面页面都在连续更新)。

启用压缩

减掉响应结果也是常用的网站优化措施,由于现行反革命的浏览器都已协理压缩功用,
因而,要是在服务端能减小响应结果,对于网速较慢的用户来说,会减小过多网络传输时间,最后的体会便是网页展现速度变快了!

IIS6固然提供压缩的装置界面,可是配置是依照服务器级其余:
九五至尊ii 8

留神:那里的【应用程序文件】不包涵aspx,假设急需压缩aspx的响应,
需求手工修改x:\WINDOWS\system32\inetsrv\MetaBase.xml文件(参考加大字号部分):
九五至尊ii 9

<IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/gzip"
        HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
        HcCreateFlags="1"
        HcDoDynamicCompression="TRUE"
        HcDoOnDemandCompression="TRUE"
        HcDoStaticCompression="TRUE"
        HcDynamicCompressionLevel="9"
        HcFileExtensions="htm
            html
            txt
            js
            css
            htc"
        HcOnDemandCompLevel="10"
        HcPriority="1"
        HcScriptFileExtensions="asp
            exe
            aspx
            axd"
    >

注解:要修改MetaBase.xml,须求甘休IIS Admin Service服务。

在IIS7中,我们得以在服务器级别配备压缩参数:
九五至尊ii 10

下一场在各样网站中拉开恐怕关闭压缩作用:
九五至尊ii 11

申明:IIS7中早已不复行使MetaBase.xml,所以大家找不到IIS6的那个设置了。
IIS7调减的过滤条件不再针对扩大名,而是采纳了mimeType规则(保存在applicationHost.config)。
依据IIS7的缩减规则,当大家启用动态压缩后,会压缩aspx的响应结果。

三种裁减方法的不一样: 1.
静态内容减少:当服务器在第二次响应有个别静态文件时,会转变1个压缩后的结果,并保留到磁盘中,以便重用。
2.
动态内容减少:【每趟】在响应客户端之前,压缩响应结果,在内部存款和储蓄器中实现,因而会给CPU带来一些担当。

瞩目:要不要【启用动态内容收缩】这几个参数,需求评估服务器的CPU是还是不是能以接受(观望职责管理器大概查看品质计数器)。

归来顶部

在网站的优化阶段,我们可以用Fiddler之类的工具找出一对剧情大概不会变动的页面,给它们设置OutputCache,
不过,依据古板的费用流程,大家须求针对种种页面文件执行以下操作:

剔除无用的HttpModule

对3个网站来说,ASP.NET提供的有点HttpMoudle恐怕并不是须要的,
不过,假若您不去手工业禁止使用它们,它们其实会直接运转。 比如
会禁止使用下边这几个HttpMoudle:

<httpModules>
    <remove name="Session"/>
    <remove name="RoleManager"/>
    <remove name="PassportAuthentication"/>
    <remove name="Profile"/>
    <remove name="ServiceModel"/>
</httpModules>

对此利用Forms身份申明的网站的来说,上面这几个HttpModule也是足以禁止使用的:

<httpModules>
    <remove name="WindowsAuthentication"/>
    <remove name="FileAuthorization"/>
</httpModules>

归来顶部

  1. 签出页面文件。
  2. 添加OutputCache指令。
  3. 重复公布页面。
  4. 签入文件(假使赶上多分支并行,还可能须求统一操作)。
    如上那些源代码管理制度会让一个回顾的事务复杂化,那么,有没一种更简短的办法能一蹴而就这些题材呢?

其它优化增选

优化ASP.NET网站是八个大的话题,除了博客中牵线的那么些方法之外,还有以下方法也是足以参考的:

  1. 进步服务器硬件配备。 2. 施用Windows Server
    二〇〇九之上版本操作系统(网络质量比2000要好)。 3.
    优化操作系统配置(例如禁止使用不供给的劳动)。 4. 剥夺调试形式。 5.
    网站选取专用应用程序池。

接下去,本文将介绍一种格局,它选取ASP.NET自己的扩展性,以安顿文件的主意为页面设置OutputCache参数。
配置文件其余便是2个XML文件,内容如下:

<?xml version=”1.0″ encoding=”utf-8″?>

<OutputCache xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance

                        xmlns:xsd=”http://www.w3.org/2001/XMLSchema"&gt;

    <Settings>

        <Setting Duration=”3″ FilePath=”/Pages/a3.aspx”  />

        <Setting Duration=”10″ FilePath=”/Pages/a5.aspx”  />

    </Settings>

</OutputCache>

看了那段配置,小编想你应该也能猜到它能有怎么样效果。

每一行配置参数为四个页面内定OutputCache所须要的参数,
示例文件为了容易只行使一个参数,别的能够支撑的参数请参见OutputCache指令

为了能让那么些布局文件有效,必要在web.config中配备以下内容(适用于IIS7):

<system.webServer>

    <modules>

        <add name=”SetOutputCacheModule”
type=”WebSiteOptimize.SetOutputCacheModule, WebSiteOptimize” />

    </modules>

</system.webServer>

在那边,小编登记了一个HttpModule,它的整套代码如下:

public class SetOutputCacheModule : IHttpModule

{

    static SetOutputCacheModule()

    {

        // 加载配置文件

        string xmlFilePath = Path.Combine(HttpRuntime.AppDomainAppPath,
“OutputCache.config”);

        ConfigManager.LoadConfig(xmlFilePath);

    }

 

    public void Init(HttpApplication app)

    {

        app.PreRequestHandlerExecute += new
EventHandler(app_PreRequestHandlerExecute);

    }

 

    void app_PreRequestHandlerExecute(object sender, EventArgs e)

    {

九五至尊ii,        HttpApplication app = (HttpApplication)sender;

 

        Dictionary<string, OutputCacheSetting> settings =
ConfigManager.Settings;

        if( settings == null )

            throw new
ConfigurationErrorsException(“SetOutputCacheModule加载配置文件失利。”);

 

        // 完成情势:

        // 查找配置参数,假使找到匹配的呼吁,就设置OutputCache

        OutputCacheSetting setting = null;

        if( settings.TryGetValue(app.Request.FilePath, out setting) ) {

            setting.SetResponseCache(app.Context);

        }

    }

ConfigManager类用于读取配置文件,并启用了文件注重技术,当配置文件更新后,程序会自行重新加载:
                       😉

有了AutoSetOutputCacheModule,大家就可以间接行使布置文件为页面设置OutputCache参数,而不供给修改任何页面,是还是不是很简单采用?

说明:MyMVC框架已辅助那种效果,全体相关的能够从MyMVC框架的源码中获取。

建议:对于一些很少改变的页面,缓存页是一种很有效的优化措施。

回来顶部

启用内容过期

每一个网站都会有部分能源文件(图片,JS,CSS),那一个文件相对于ASPX页面来说,
它们的输出内容极有可能在一段长时间之内不会有变化,
而IIS在响应那类资源文件时不会生成Cache-Control响应头。
在那种状态下,浏览器或然会缓存它们,大概会重新发起呼吁(比如重启后),由此可知正是缓存行为不受控制且缓存时间相当短久。

有没有想过能够把它们在浏览器中长久缓存起来吧?

为了告知浏览器将那个文件长久缓存起来,收缩部分华而不实的呼吁(升高页面显示速度),我们可以在IIS中启用内容过期,
那样设置后,IIS就能生成Cache-Control响应头,鲜明告知浏览器将文件缓存多长时间。

在IIS6中,这一个参数很好找到:

不过,在IIS7中,这些参数不简单被发觉,必要以下操作才能找到:
选择网站(抑或网站子目录)节点,双击【HTTP响应标头】

再点击左边的【设置常用标头】链接,

那儿将会显示:

说明:【启用内容过期】那么些装置能够依据整个网站,也能够针对子目录,或然二个有血有肉的文本。

注意:假定你在IIS7中针对某些子目录只怕文件设置【启用内容过期】,前边的对话框看起来是一模一样的,
唯独,在IIS6中,我们得以知晓地从对话框的题目栏中级知识分子情大家在做哪些:

偶尔真觉得IIS7的界面在走下坡路!

说到底本身想说一句:能够一向为整个网站启用内容过期,ASPX页面是不会被缓存的!

说到此处大概有人会想:那一个过期时间作者该装置多长期呢?
十分钟,一个钟头,一天,依旧1个月?
在小编眼里,这么些时间越久越好。
唯恐有人又会说了:万一自身要进步有些JS文件怎么办,时间设置久了,用户怎么翻新呢?
一旦你问作者这么些标题,笔者也只好算得你的代码不客观(究竟你消除不了升级难点),想精通原委来说,请继续阅读。

回去顶部

缓解财富文件升级难点

对此一些层面十分小的网站的话,平日会将能源文件与程序文件一起安顿到四个网站中。
那时也许会选用下边包车型大巴点子来引用JS大概CSS文件:

<link type=”text/css” href=”aaaa.css” rel=”Stylesheet” />

<script type=”text/javascript” src=”bbb.js”></script>

在那种景况下,要是使用了前边所说的【启用内容过期】方法,那么当有JS,CSS文件要求进步时,
由于浏览器的缓存还并未过期,所以就不会呈请服务器,此时会使用已缓存的本子,
因而大概会油然而生各样奇怪的BUG

对此日前谈到的BUG,小编觉得根源在于引用JS,CSS文件的方式有欠缺,
那种办法完全没有设想到版本升级难点, 正确的法子有二种:
1.
给文件名添加版本号,像jquery那样,每种版本二个文本(jquery-1.4.4.min.js)。

  1. 在U牧马人L前面添加二个本子号,让原来的UMuranoL失效。

率先种艺术由于每便升级都产生了3个新文件,所以不设有缓存难点,可是,维护一大堆文件的本钱或许会相比大,
由此作者建议采取第两种艺术来缓解。

MyMVC的言传身教代码中,作者利用了上面包车型客车办法来引用这几个能源文件:

<%= HtmlExtension.RefCssFileHtml(“/css/StyleSheet.css”)%>

<%= HtmlExtension.RefJsFileHtml(“/js/MyPage/fish.js”)%>

在页面运营时,会发出如下的输出结果:

<link type=”text/css” rel=”Stylesheet”
href=”/css/StyleSheet.css?_t=634642185820000000″ />

<script type=”text/javascript”
src=”/js/MyPage/fish.js?_t=634642154020000000″></script>

那三个工具方法的落到实处代码如下(在MyMVC的言传身教代码中):

地点那种获取文件版本号的措施,是一种相比简单的消除方案。
各类引用的地点在生成HTML代码时,都会访问文件的结尾修改时间,那会给磁盘带来一点读的开销,
固然您担心那种实现方式大概会给品质带来影响,那么也能够扩张二个安顿文件的办法来化解(请自行完成),
例如以下结构:

<?xml version=”1.0″ encoding=”utf-8″?>

<ArrayOfFileVersion
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance

                    xmlns:xsd=”http://www.w3.org/2001/XMLSchema"&gt;

    <FileVersion FilePath=”/js/JScript.js” Version=”255324″ />

    <FileVersion FilePath=”/css/StyleSheet.css” Version=”2324235″
/>

</ArrayOfFileVersion>

设若您觉得那种安插文件须求手工业维护,不够自动化,还能够使用程序的办法自行在运作时保卫安全多少个列表,
不问可见,直接引用财富文件的主意是一种直接耦合,会给文件升级带来劳动,
大家能够经过1个表面方法来解开那个平昔耦合(给FileVersion扩展贰个属性还还足以将内部地址改成一个CDN地址)。

归来顶部

启用压缩

缩减响应结果也是常用的网站优化措施,由于现行的浏览器都已匡助压缩成效,
由此,假使在服务端能压缩响应结果,对于网速较慢的用户来说,会缩减过多互联网传输时间,最后的体会正是网页展现速度变快了!

IIS6就算提供压缩的安装界面,但是配置是依据服务器级其余:

留神:那里的【应用程序文件】不包蕴aspx,假设急需压缩aspx的响应,
须求手工业修改x:\WINDOWS\system32\inetsrv\MetaBase.xml文件(参考加大字号部分):

证明:要修改MetaBase.xml,必要截至IIS Admin Service服务。

在IIS7中,大家得以在服务器级别配备压缩参数:

下一场在种种网站中拉开可能关闭压缩功效:

注脚:IIS7中早就不复利用MetaBase.xml,所以大家找不到IIS6的那二个设置了。
IIS7削减的过滤条件不再针对扩张名,而是采纳了mimeType规则(保存在applicationHost.config)。
依据IIS7的滑坡规则,当我们启用动态压缩后,会压缩aspx的响应结果。

三种收缩方法的区别:
1.
静态内容减弱:当服务器在第②回响应有些静态文件时,会变卦二个减小后的结果,并保留到磁盘中,以便重用。
2.
动态内容减弱:【每一遍】在响应客户端以前,压缩响应结果,在内部存储器中形成,由此会给CPU带来一些顶住。

在意:要不要【启用动态内容缩短】这几个参数,供给评估服务器的CPU是不是能以接受(观望职务管理器只怕查看品质计数器)。

回去顶部

删除无用的HttpModule

对1个网站的话,ASP.NET提供的略微HttpMoudle可能并不是内需的,
可是,只要你不去手工业禁止使用它们,它们其实会一贯运维
比如 会禁止使用下边那么些HttpMoudle:

<httpModules>

    <remove name=”Session”/>

    <remove name=”RoleManager”/>

    <remove name=”PassportAuthentication”/>

    <remove name=”Profile”/>

    <remove name=”ServiceModel”/>

</httpModules>

对此利用Forms身份认证的网站的来说,上边那几个HttpModule也是可以禁止使用的:

<httpModules>

    <remove name=”WindowsAuthentication”/>

    <remove name=”FileAuthorization”/>

</httpModules>

回到顶部

别的优化增选

优化ASP.NET网站是二个大的话题,除了博客中牵线的这一个方式之外,还有以下情势也是足以参考的:

  1. 升级服务器硬件配置。
  2. 应用Windows Server 二零一零上述版本操作系统(互联网质量比二〇〇二要好)。
  3. 优化操作系统配置(例如禁止使用不要求的劳动)。
  4. 剥夺调试方式。
  5. 网站选择专用应用程序池。

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图