网站性能

news/2024/5/15 18:27:06/文章来源:https://blog.csdn.net/weixin_34355559/article/details/94106305

【概述】

在这一章节,我们的主题聚焦在基础设施建设上。

  • Http Compression(压缩)
  • Content Expirations (内容过期)
  • Content Distribution Networks - CDN(内容分发网络)
  • Etags (E标签)
  • 去掉没必要的Http header

 

【Compression】

 

  我们前边提到过,性能规则中的一条就是在服务器和浏览器之间传输的数据越少越好。介于此规则,我们可以使用一个比较成熟的技术:Http Compression。

  •   Server 端会评估客户端发来的http request中header里的"Accept-Encoding”。来确定客户端是否能处理压缩过的数据。如果支持,server端会去对数据进行压缩并返回结果到客户端。
  • 在keynote这个第三方服务评估的结果是,可以平均节省53%的带宽,,网站平均快了25%。
  • 现在IIS也提供这种技术的支持(免费的)

    IIS7 对 compression 的支持

  • 支持配置当cpu占用率过高时,自动停止使用
  • 默认最小的文件大小是256k。
  • 默认启动静态内容的压缩

    如果你对IIS 使用compression 感兴趣。可以参见:http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx

 

  【在IIS中配置Compression】

 

    打开IIS。选中一个你的网站。在右边选项卡里选择压缩(compression)

   

也许有的朋友会发现,动态压缩是灰色的。其实是我们没安装动态压缩模块。我使用的是win7。安装方法如下:

控制面板-》程序-》开启或关闭windows功能-》Internet 信息服务-》万维网服务-》性能功能(猥琐)-》动态内容压缩

如果是win server版本的朋友需要:

    1. Administrative Tools | Server Manager。
    2. 展开Roles,点击Web Server(IIS)。
    3. 滚动到Role Services,点击Add Role Services,打开Add Role Services向导。
    4. 在Select Role Services页面,滚动到Performance,选择Dynamic Content Compression,选择下一步。

     现在我们还用第一章里用到的那个网站做测试。打开fiddler。

记下每个文件的大小。返回到IIS,开启动态压缩和静态压缩。现在IIS 再接收到请求我的js和css文件时。它先会判断是否已经压缩过呗请求的文件。如果没有它会进行压缩,并且存储到某一个目录。其他用户同样请求相同的文件时,它直接获取压缩过的文件即可。

     现在我们回到fiddler看看结果吧。

     

jquery 文件从236K被压缩到90k。其他js和css文件也都受到相应的压缩。

 

现在我们再使用上一章的另一把利器microsoft network monitor观察压缩前和压缩后  来看看发生了什么变化。

压缩前:

压缩后:

 

非常容易使用 MS Network monitor 对比出。压缩前后,frame的数目明显的减少了,从40条减少到9条。

由于95%以上的请求都会被询问是否启用compression。所以主流的浏览器都支持compression。

启用compression会占用少许的cpu。IIS7 对这一块做了优化。

为了确保压缩没有使CPU超载,IIS7每30秒计算平均CPU利用率。当CPU利用率超过一个限制时,它会自动关闭压缩。当CPU利用率低于限制时, 它会重新启用压缩。

限制的默认值是:

 关闭压缩重启压缩
动态文件90%50%
静态文件100%50%

注意这意味着如果服务器上的CPU一直在50%以上,但偶然高于90%,动态文件压缩会被关闭,但再也不会重新开启了。

可以通过修改applicationHost.config文件修改这些限制,通常它在C:\Windows\System32\inetsrv\config文件夹下。

找到<httpCompression>节。

2.修改httpdynamicCompressionEnableCpuUsage属性:<httpCompressiondynamicCompressionEnableCpuUsage="70".... >

3.重启IIS。

 

 

【Content Expirations】

 

  回顾一下我们第一张讲过的性能规则。有一条是尽可能不经常地传输数据。

  一个用户访问我网站的首页,他会得到我的js,css和图片等文件。浏览器则替他保存到本地的缓存中。过了几天用户又来访问我的网站了。服务器还会看看浏览器缓存中有木有他要的文件。如果有的话,它会告诉server。我有这个文件。但是我想知道它的版本是不是最新的。服务器会看看这个文件到底改没改。如果改了,服务器会发送新的文件。如果没,服务器会返回给浏览器状态码304。涛声依旧。

 

304.没改。

利用浏览器缓存:

  • 对于content folder 设置过期时间
  • 尽量避免请求不经常改动的文件
  • 重命名文件,如果需要重写浏览器缓存(版本号/时间戳)

 

  【在IIS中配置Content Expirations】

 

   打开IIS。选中你的站点。选中scripts文件夹(装js的地方。如果有的话)在视图选项卡里找到HTTP 响应标头并进入。

   右上角,设置常用标头-》使web内容过期。我们设置5天吧。这时候访问我们的网站。使用fiddler 观察结果如下:

   

那个max-age 我们算算 。正好是5天:)现在我们再打开IE。internet选项-》浏览历史记录-》设置-》查看文件

找到我们的js文件。查看属性,8月7号过期,正好5天:)

 

   【CDN】

 

另一个对于提高网站性能有效的办法就是使用CDN了。

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

      在这里我只做简单介绍,需要了解更详细信息,请参见:http://en.wikipedia.org/wiki/Content_delivery_network

      看到这里读者肯定会说我屌丝了。不解释还废话那么多干什么?CDN都是大公司用的和我们有关系么?

      下面我来讲讲我们可以利用到的CDN:

      JQuery是现在最流行的js library之一。google、microsoft、jquery.com都免费host了jquery库在它们的cdn上。请看下图:

      我在这里可以使用我们自己的服务器上的jquery文件。也可以选择从google、微软和jquery官网的cnd来读。即可以给自己服务器减少压力。也可以利用cnd加快读取速度。

 

  

【ETags】

 

   什么是ETags?Etag的全称是 entity tag。ETag实际上是一个hash+changeNumber组成的值。hash由文件内容生成。IIS7中changeNumber默认是0;

  本章前边内容提到,我们通过设置内容过期,利用浏览器缓存达到性能优化的效果,会使用expires headers告诉浏览器,不用再发送条件GET请求给服务器啦,直接用缓存里面的数据就可以啦,从而加快访问速度。

     Etags 使用过程如下:

  1. 客户端请求一个资源source 。
  2. 服务器返回页面souce,并在给source加上一个ETag。
  3. 客户端展现该页面,并将页面连同ETag一起缓存。
  4. 客户再次请求资源source,并将上次请求时服务器返回的ETag一起传递给服务器。
  5. 服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体。

   

     从此看来Etag有可能会误导浏览器,让浏览器忽略缓存重复下载相同的文件。

     我们试着从删除ETAG。

     先看看没删除之前ETAG长什么样?

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;/// <summary>
/// Summary description for ETagRemoveModule
/// </summary>
public class ETagRemoveModule : System.Web.IHttpModule
{public ETagRemoveModule(){//// TODO: Add constructor logic here//
    }public void Dispose(){}public void Init(HttpApplication context){context.EndRequest += new EventHandler(HandlerEndRequest);}public void HandlerEndRequest(Object sender, EventArgs e){System.Web.HttpContext.Current.Response.Headers.Remove("ETag");}}
复制代码

 

  <system.webServer><modules><add name="ETagRemoveModule.cs" type="ETagRemoveModule"/></modules></system.webServer>

ETags就没啦:)

【去掉没必要的Http header】

 

我们使用fiddler 可以看到,http response header 包含了很多信息。

 

但是有些信息是没必要展示给用户看的。比如我们使用了.netframework 4.0.我们使用IIS7.5。

首先它是多余的信息。其次它也有可能被一些骇客利用。

所以我们修改一下我们的代码:

复制代码
 public void HandlerEndRequest(Object sender, EventArgs e){HttpResponse oResponse = System.Web.HttpContext.Current.Response;if (null != oResponse){oResponse.Headers.Remove("X-AspNet-Version");oResponse.Headers.Remove("Server");oResponse.Headers.Remove("ETag");}}
复制代码

     现在我们的header干净多了,也安全多了。

转载于:https://www.cnblogs.com/yangtongnet/archive/2012/08/03/2621225.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_778640.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站运维,运营经典的Firefox插件--助你提高工作效率

最近由于工作需要重新研究web的架构&#xff0c;及运营、运维相关技术。 谈到web-日常使用最多的软件工具之一就是网页浏览器&#xff0c;其中对Firefox情有独钟&#xff0c;因为它有着丰富的插件支持。 我来谈谈我个人的Firefox的几个提高工作效率的插件&#xff1a; 以下是我…

学用MVC4做网站二:用户组

用户组这块要实现的功能如下&#xff1a; 序 一、用户 二、用户组 2.1浏览用户组 2.2添加用户组 2.3修改用户组 2.4删除用户组 用户组类型应该有匿名&#xff0c;受限&#xff0c;正常&#xff0c;和特殊几种类型。 设计这些类型的目的是为了以后权限管理做准备&#xff0c;以后…

图标集锦:10套免费的社交媒体 社交网站图标

社交网络是最近几年互联网领域最热门的关键词之一&#xff0c;如今社会网络化媒体也成为我们信息获取和传播的重要途径&#xff0c;很多网站都有把内容分享到社交媒体的功能。 社交媒体图标作为向用户传递信息的重要媒介&#xff0c;不管是在网页还是 Web 应用程序中都非常需要…

探索 Windows Azure 网站中的自动伸缩功能

&#xfeff;&#xfeff;去年10月,我们发布了若干针对 WindowsAzure平台的更新&#xff0c;其中一项更新是添加了基于日期的自动伸缩调度支持&#xff08;在不同的日期设置不同的规则&#xff09;。 在这篇博客文章中&#xff0c;我们将了解自动伸缩的概念&#xff0c;并了解如…

提高网站并发性的解决方案

为什么80%的码农都做不了架构师&#xff1f;>>> 我在Cernet做过拨号接入平台的搭建&#xff0c;而后在Yahoo3721负载搜索引擎前端平台开发&#xff0c;又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作&#xff0c;同时 自己接触和开发过不少大中型网站的模块&am…

自动浏览器_微软彻底埋葬IE浏览器:当网站不支持时自动打开Edge浏览器

1995年&#xff0c;8月16日&#xff0c;微软正式推出了Internet Explorer(IE)浏览器1.0版&#xff0c;作为Windows 95 Plus增强包的一个附加软件。Internet Explorer 1.0这是微软为了抵抗当时主流的网景浏览器(Netscape Navigator)而开发的自主网络浏览器。Windows 95 Plus25年…

竞拍网站服务器配置,GOM引擎新区竞拍脚本,GOM传奇服务端设置竞拍的方法和教程...

20190801221527.png (881.14 KB, 下载次数: 1)2019-8-1 22:19 上传[main]#if#actLOADVAR HUMAN 竞拍花费 ..QuestDiary数据文件竞拍花费.txt#say开区一小时内拍卖本服唯一**时装,只卖一件,之后再无机会获得!拍卖每次加价100灵符,竞拍失败后必须先领回灵符之后才能再次参与竞拍!…

burpsuite字典_Python攻防之弱口令、自定义字典生成及网站防护

这是作者的系列网络安全自学教程&#xff0c;主要是关于网安工具和实践操作的在线笔记&#xff0c;特分享出来与博友共勉&#xff0c;希望您们喜欢&#xff0c;一起进步。前文分享了Python网络攻防基础知识、Python多线程、C段扫描和数据库编程&#xff0c;本文将分享Python攻防…

没有找到站点_2020年排名前11位的静态网站生成器,有没有你用过的?

随着JAMstack及其社区的发展&#xff0c;静态站点生成器变得越来越流行。在本文中&#xff0c;让我们看一下2020年顶级的静态网站生成器&#xff01;为什么选择静态网站生成器让我们快速讨论一下静态网站生成器的优点。速度静态站点生成器在构建时生成站点页面&#xff0c;而不…

mysql5.7 赋权_「赋权」mysql创建用户并赋权 - seo实验室

赋权新建一个数据库 ljwcreate database ljw&#xff1b;ain copyuse ljw&#xff1b;select * from user;效果如上图&#xff0c;最后用数据库软件&#xff0c;因为在linux下界面看不清效果&#xff0c;太乱了。从上图可以看到&#xff0c;会列出数据库所有的用户及权限2.创…

python抓取招聘数据_Python爬取招聘网站数据并做数据可视化处理

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于青灯编程 &#xff0c;作者&#xff1a;清风前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。基本…

wordpress html页面缓存 cdn,wordpress博客使用CloudFlare的CDN来加速网站(页面规则缓存设置教程)...

wordpress博客使用CloudFlare的CDN来加速网站(页面规则缓存设置教程)此篇文章只讲wordpress站点使用CloudFlare CDN的页面规则教程。其他问题可在下方留言&#xff0c;我会一一回复CloudFlare的CDN有一个很好的特点就是可以整站缓存下来&#xff0c;但是整站缓存时我们是无法登…

二、大型网站架构模式

网站架构模式 分层 横向维度&#xff0c;每个部分负责单一的职责。上层对下层依赖和调用。 应用层&#xff0c;服务层和数据层 分割 网站越大&#xff0c;不同功能和服务分割出来形成高内聚低耦合模块单元。 分布式 分布式部署&#xff0c;即将不同模块部署在不同的服务器上&a…

CDN技术--分布式网站架构必备利器

概念 CDN这个概念相信大家都比较耳熟&#xff0c;到底什么是CDN呢&#xff1f; CDN&#xff0c;全称为Content Delivery Network&#xff0c;即内容分发网络。 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输的更快、更稳…

网站前端_JavaScript-基础入门.0008.JavaScript作用范围

基本类型值:说明: 基本类型变量主要在栈内存中保存变量名变量值,变量赋值时解析器如果认定此值为基本类型,则分配固定大小的空间,基本类型包括Undefined, Null, Boolean, Number, String的字面值对象,称为基本类型对象var name 李满满 // 在栈内存中复制一份"李满满"…

大部分政府网站U-mail存在直接拿shell漏洞

大部分网站政府网站U-mail存在直接拿shell漏洞加入webmail/userapply.php?execadd333&DomainID111直接爆出物理地址 然后将 aa union select 1,2,3,4,5,6,<?php eval($_POST1);?>,8,9,10,11,12,13,14 into outfile D:/umail/WorldClient/html/saknc.php#用base64编…

网站嵌入虚拟试衣间方案问题

网站嵌入虚拟试衣间方案问题 好买衣虚拟试衣间目前只接入天猫和淘宝的店铺&#xff0c;只有手机版&#xff0c;不考虑跟其他平台合作。 衣(Yi)没有虚拟试衣功能&#xff0c;PK明星衣品功能可以提供API&#xff0c;虚拟试衣及服饰推荐可以具体沟通后提供定制化的服务&#xff08…

大型分布式网站架构

2019独角兽企业重金招聘Python工程师标准>>> SOA&#xff08;Service-Oriented Architecture 面向服务的体系结构&#xff09; 服务化的体系&#xff0c;即SOA&#xff0c;SOA系统之间以服务的方式来进行交互&#xff0c;这样就保证了交互的标准性&#xff0c;这对一…

制作网站快捷方式

有些时候我们想访问某个网站&#xff0c;但不想去浏览器的地址栏里输入URL.这时有一个网站的快捷方式会很方便。 现在介绍网站快捷方式的制作步骤&#xff1a; 1、如图所示&#xff1a;在桌面上右键-->新建-->快捷方式2、输入网站的网址&#xff1a;例,http://www.baidu.…

2019年,网站优化,该如何正视SEO?

在2019年谈论SEO&#xff0c;实际上我们面临诸多风险&#xff0c;一是新媒体行业&#xff0c;不断在改变用户的阅读习惯&#xff0c;二是基于搜索引擎而言&#xff0c;本身也在不断的发展与革命&#xff0c;特别是百度搜索团队&#xff0c;近1年&#xff0c;不断在调整自己的发…