zoukankan      html  css  js  c++  java
  • 网站优化攻略

    1、在<Head>上添加样式:

    • 尽量不用内联样式和内部样式
    • 使用外部样式表并将它们放在<Head>标签下

    2、把javascript放到body标签的底部

    <script src=”PATH_TO_SCRIPT” defer/>中使用defer标签以防止javascript脚本阻止页面html的呈现。

    3、添加网站Logo图标,如果是ASP.NET MVC应用程序,记得在过滤规则中添加排除:

    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" })
    

    4、通过使用CSS sprites减少对静态数据的请求


    5、
    配置IIS和你的webapp gzip和缓存

    <system.webServer>
        <staticContent>
          <remove fileExtension=".js" />
          <remove fileExtension=".css" />
          <mimeMap fileExtension=".js" mimeType="text/javascript" />
          <mimeMap fileExtension=".css" mimeType="text/css" />
          <clientCache cacheControlCustom="public" 
          cacheControlMode="UseMaxAge" cacheControlMaxAge="500.00:00:00" />
        </staticContent>
        <urlCompression doStaticCompression="true" doDynamicCompression="true" />
    </system.webServer>
    

     6、减少CSS和JavaScript文件

    为了尽量减少你的CSS和JavaScript文件,您需要安装squishit和squishit MVC的扩展。就我个人而言,我更喜欢squishit捆在ASP.NET。下面的语法可以用在你的视图来减少CSS文件:

    @(Bundle.Css()
    .Add("~/Content/base.css")
    .Add("~/Content/CSS/Plugins/BootstrapDatepicker/daterangepicker-bs3.css")
    .MvcRender("~/Content/CSS/min/combined_#.css"))
    

     以下用来减少JavaScript:

    @(Bundle.JavaScript()
    .Add(@"~/Scripts/lib/jquery-2.0.2.min.js")
    .Add(@"~/Scripts/lib/jquery.slimscroll.min.js")
    .Add(@"~/Scripts/lib/jquery-ui-1.10.3.custom.min.js")
    .Add(@"~/Scripts/lib/typeahead.min.js")
    .Add(@"~/Scripts/lib/daterangepicker.js")
    .Add(@"~/Scripts/lib/moment.min.js")
    .MvcRender("~/Scripts/min/combined_#.js"))
    

    7、对于那些使用窗体进行验证的web应用程序,这种优化是强制性的。你或许会问为什么?当用户经过了验证,web应用将会创建一个验证的Cookie,这个Cookie是经过安全加密的,大小在2KB。你浏览器的每一次对静态资源(图片,CSS文件,JavaScript文件)的请求都会包含该Cookie。因此当我们后退或前进时对每次请求都会有2KB的消耗。这是非常糟糕的!我们有两个方面要解决: 

    • 支付内容交付网络
    • 在浏览器中欺骗

    第一条很容易解决,让我们来解决第二条。在你的文件中创建一个CNAME(别名)命名cdn.yourwebsite.com。将别名指向您的网站应用程序域。

    现在,我们将使用一个改进的MVC版本缓存断路器:

    namespace System.Web.Mvc
    {
        public static class CdnExtensions
        {
            private static readonly Regex ScriptRegex = new Regex
            ("<script.+?src=["'](.+?)["'].*?>", 
            RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
            private static readonly Regex CssRegex = new Regex("<link.+
            ?href=["'](.+?)["'].*?>", 
            RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
     
            public static string CdnContent(this UrlHelper url, string link, bool isDynamicResource = false)
            {
                link = link.ToLower();
     
                // last write date ticks to hex
                string cacheBreaker = string.Empty;
     
                if (!isDynamicResource)
                {
                    cacheBreaker = Convert.ToString(File.GetLastWriteTimeUtc
                    (url.RequestContext.HttpContext.Request.MapPath(link)).Ticks, 16);
                }
     
                link = link.TrimStart(new[] {'~', '/'});
                link = string.Format("{0}/{1}", “BASE_CDN_URL”, link);
     
                // returns the file URL in static domain
                return isDynamicResource ? link : string.Format("{0}?v={1}", link, cacheBreaker);
            }
     
            public static MvcHtmlString CdnContent
            (this UrlHelper url, MvcHtmlString mvcLink, bool isDynamicResource = false)
            {
                var context = mvcLink.ToHtmlString().ToLower();
                // match the scripts
                var linksMatches = ScriptRegex.Matches(context);
                var sb = new StringBuilder();
                foreach (Match linkMatch in linksMatches)
                {
                    var link = linkMatch.Groups[1].Value;
                    link = CdnContent(url, link, isDynamicResource);
                    var script = string.Format
                    ("<script type='text/javascript' src='{0}'></script>", link);
                    sb.AppendLine(script);
                }
                // match the styles
                linksMatches = CssRegex.Matches(context);
                foreach (Match linkMatch in linksMatches)
                {
                    var link = linkMatch.Groups[1].Value;
                    link = CdnContent(url, link, isDynamicResource);
                    var script = string.Format("<link href='{0}' 
                    rel='stylesheet' type='text/css' />", link);
                    sb.AppendLine(script);
                }
     
                return new MvcHtmlString(sb.ToString());
            }
        }
    }
    

     HTML:

    @(Url.CdnContent(Bundle.Css()
    .Add("~/Content/base.css")
    .Add("~/Content/CSS/Plugins/BootstrapDatepicker/daterangepicker-bs3.css")
    .MvcRender("~/Content/CSS/min/combined_#.css")))
    

     JavaScript:

    @(Url.CdnContent(Bundle.JavaScript()
    .Add(@"~/Scripts/lib/jquery-2.0.2.min.js")
    .Add(@"~/Scripts/lib/jquery.slimscroll.min.js")
    .Add(@"~/Scripts/lib/jquery-ui-1.10.3.custom.min.js")
    .Add(@"~/Scripts/lib/typeahead.min.js")
    .Add(@"~/Scripts/lib/daterangepicker.js")
    .Add(@"~/Scripts/lib/moment.min.js")
    .MvcRender("~/Scripts/min/combined_#.js")))
    

    参考连接:http://www.codeproject.com/Tips/986088/Optimize-your-WebApp-like-a-PRO-ASP-NET-MVC-Boiler

  • 相关阅读:
    FineReport——函数
    FineReport——插入行策略
    FineReport——JS二次开发(CSS改变控件样式)
    FineReport——JS二次开发(下拉框)
    汽车系统
    Ubuntu Software setup
    Win 10 乱码 & 字体横过去了
    U-boot 2016.11 代码结构 dra7xx
    samba Ubuntu 16.04
    ftp Ubuntu16.04
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4809577.html
Copyright © 2011-2022 走看看