在卡卡网的网站速度诊断里的检测结果:
html网页已经成功启用了GZip压缩
css文件未成功启用GZip压缩
后来研究发现,IIS启用GZip时默认压缩的只有html网页,如果需要压缩css、js等文件,还需要另外简单配置一个文件。
打开C:\WINDOWS\system32\inetsrv\MetaBase.xml这个文件,然后查找“IIsCompressionScheme”,会发现有三段,后面那个不用管,只设置前面两个即可。其中,"/LM/W3SVC/Filters/Compression/gzip"用于设置gzip压缩,"/LM/W3SVC/Filters/Compression/deflate"用于设置deflate压缩。
如需压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为“TRUE”,并在HcFileExtensions的属性中加入需要压缩的静态文件:css、js等;
如需压缩动态文件,则将HcDoDynamicCompression设置为“TRUE”,并在HcScriptFileExtensions属性中加入需要压缩的动态文件:aspx、php等。
另外,HcDynamicCompressionLevel属性和HcOnDemandCompLevel属性一般都推荐设置为9, 具有最佳性价比。
参考如下各参数设置:
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="9"
HcFileExtensions="htm
html
txt
css
js
xml"
HcOnDemandCompLevel="9"
HcPriority="1"
HcScriptFileExtensions="asp
aspx
dll
exe"
>
</IIsCompressionScheme>
<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
css
js
xml"
HcOnDemandCompLevel="9"
HcPriority="1"
HcScriptFileExtensions="asp
aspx
dll
exe"
>
</IIsCompressionScheme>
设置完毕后,重新启动IIS,再检测时发现css、js等文件已经成功启用GZip了。
您可能对如下文章也感兴趣
IIS启用GZip压缩的详细教程【图解】
我们经常会遇到404、500、302等提示,它们究竟是什么意思呢?除了这几个常见的状态码外,还有哪些我们没有遇到过的但有可能出现的状态码呢?这里本人做了一个汇总,与大家分享一下。
HTTP状态码 摘要说明
-----------------------------------------------------------------------------------------------------------
成功2XX 成功处理了请求的状态码。
200 服务器已成功处理了请求并提供了请求的网页。
204 服务器成功处理了请求,但没有返回任何内容。
重定向3XX 每次请求中使用重定向不要超过 5 次。
301 请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。
302 请求的网页临时移动到新位置。搜索引擎索引中保存原来的URL。
304 如果网页自请求者上次请求后没有更新,则用304代码告诉搜索引擎机器人,可节省带宽和开销。
客户端错误4XX 表示请求可能出错,妨碍了服务器的处理。
400 服务器不理解请求的语法。
403 服务器拒绝请求。
404 服务器找不到请求的网页。服务器上不存在的网页经常会返回此代码。
410 请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,
但在资源以前存在而现在不存在的情况下,有时用来替代404 代码。如果资源已永久删除,应当使用 301 指定资源的新位置。
服务器错误5XX 表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
500 服务器遇到错误,无法完成请求。
503 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
详细分解:
2XX 成功
200 正常;请求已完成。
201 正常;紧接 POST 命令。
202 正常;已接受用于处理,但处理尚未完成。
203 正常;部分信息 — 返回的信息只是一部分。
204 正常;无响应 — 已接收请求,但不存在要回送的信息。
3XX 重定向
301 已移动 — 请求的数据具有新的位置且更改是永久的。
302 已找到 — 请求的数据临时具有不同 URI。
303 请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。
304 未修改 — 未按预期修改文档。
305 使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。
306 未使用 — 不再使用;保留此代码以便将来使用。
4XX 客户机中出现的错误
400 错误请求 — 请求中有语法问题,或不能满足请求。
401 未授权 — 未授权客户机访问数据。
402 需要付款 — 表示计费系统已有效。
403 禁止 — 即使有授权也不需要访问。
404 找不到 — 服务器找不到给定的资源;文档不存在。
407 代理认证请求 — 客户机首先必须使用代理认证自身。
415 介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。
5XX 服务器中出现的错误
500 内部错误 — 因为意外情况,服务器不能完成请求。
501 未执行 — 服务器不支持请求的工具。
502 错误网关 — 服务器接收到来自上游服务器的无效响应。
503 无法获得服务 — 由于临时过载或维护,服务器无法处理请求。
504 Gateway Timeout
作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
注意:某些代理服务器在DNS查询超时时会返回400或者500错误
505 HTTP Version Not Supported
服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。这暗示着服务器不能或不愿使用与客户端相同的版本。响应中应当包含一个描述了为何版本不被支持以及服务器支持哪些协议的实体。
506 Variant Also Negotiates
由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
507 Insufficient Storage
服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
508 Loop Detected
服务器发现请求中出现一个无穷循环
509 Bandwidth Limit Exceeded
服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。
510 Not Extended
获取资源所需要的策略并没有没满足。(RFC 2774)
常见错误的处理方法
500错误
500错误是站长经常遇到的问题,就本人的经验,原因及解决方法归纳如下:
1、运行的用户数过多,对服务器造成的压力过大,服务器无法响应,则报HTTP500错误。
这个原因是网站报500错误的最主要原因,很多网站为什么突然会报500错误(service unavailable)呢?90%是由于空间压力过大,超出了空间商设定的上限而造成的。
遇到这个问题,最好是第一时间找到空间商的售后服务,他们一般会帮你回收一下应用程序池,问题便得到解决。如果没有找到售后服务,可以自己在空间管理后台,找到“回收应用程序池”那个项目,自己手动执行一下即可。不过,一些空间管理后台并没有提供该项服务。
2、如果排除了第1的可能性,那么很大原因便是程序上出现了问题。
可以做个简单的测试页面,看是否能运行成功,再检测报错的页面,从而针对性的进行修改。
该做关联的地方没有去做关联,则报HTTP500错误。进行手工或者自动关联,问题得到解决。
3、如果测试中所进行的操作需要向数据库中插入数据,若大数据量的情况下导致数据库中表空间已满,或者缓冲池较小无法满足数据的存取等,都有可能导致HTTP500错误。
解决方法是调整数据库、修改连接池大小等等,根据个人具体情况进行修正即可。
rsync它原本是在Linux系统下面的一个文件同步协议,随着技术的发展,它也有其它版本的,如Windows和AIX、HPUX下面都有相应的版本可以支持的。Rsync这个同步工具的好处在于完全命令行下面的操作,有详细的日志文件,同时也能支持多种不同情况下的更新,例如备份式更新等,还有一个非常好的地方是,它和服务器之间可以互相同步,即可以从服务器上更新文件下来,也可以把本地的文件提交到服务器上面去。只要你配置的参数是正确的,就能完成这样的工作。
而且这个工具占用的系统资源也比较小。另外我们也试过,用这个工具和xcopy,SecondCopy相比,优点实在是太多了,特别是在文件数量和大小非常庞大,优势更明显,200G以上的数据,十几万个文件,xcopy只要有一个出错,就麻烦了,要么中断,要么你得重新开始copy,SecondCopy这个工具在copy 200G这样的大数据量的文件时,它走不下去了,反正停在那里总是报错,而rsycn则完全没有这样的毛病。200G以上的数据,十几万个文件,我们用 Rsync可以成功的copy过去。
Rsync有一个比较慢的地方是,它在同步时,会根据本地的目录中的文件同服务器上的文件进行对比,这样比较之后,它只更新那里不一样的文件,相同的文件它会直接跳过去的,如果要同步的文件数量非常庞大时,这个比较过程就非常慢,需要等待很长时间。
Rsync的参数说明这里就不说了,大家google一下 rsycn中文手册 这个关键字,网上有很多说明的,这里只讲一下在Windows下面的安装和使用过程。
在 Windows下面,这个工具也有安装文件,http://rsync.samba.org/download.html,网上有下载的,在 Windows下面建议大家安装这个,AIX和HPUX系统下面,如果大家需要使用的话,需要自己去下载源码进行安装。在Windows下面安装后,它增加了一个手工启动后台服务RsyncServer ,在默认情况下,安装后这个服务是没有启动的,所以在第一次安装后,你要手工把这个服务启动起来,并且设置成随操作系统启动而自动启动。
安装完之后的第二步就是配置它的同步目录了,在安装目录下面有一个rsyncd.conf这样的文件,用文本编辑器打开,可以在里面看到以下的内容:
use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
pid file = rsyncd.pid
#Module definitions
#Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/c/work
read only = false
transfer logging = yes
在# 之前那几行可以不管,最下面的那几行才是我们最关心的,需要注意的是,Rsync这个工具是从Linux下发展下来的,所以它的路径和Windows下面的路径有点不一样,需要转换一下,如c:\work这个目录,在Rsync中的目录路径应该写成 /cygdrive/c/work 这样,这种格式里面没有那个冒号,用得全部都是反斜杠,在驱动器的盘符前面要加上/cygdrive/。 其它的路径参照这个格式改一下就可以了。
[test] 这一行是表示你设置的某个同步目录的模块名称,你可以把它理解成一个Rsync中的别名,这样可能会容易理解一些,要注意的是,这个名称是区分大小写的,而且不能重复。
path = /cygdrive/c/work 这一行是表示你设置的同步目录的物理文件路径,这个格式需要注意,不要写错了
read only = false 表示设置的这个同步模块只能读,不能通过rsync的客户端向这里写文件
transfer logging = yes 表示在同步的时候将输出的日志按预定的格式进行格式化,具体的格式和日志你可以查看安装目录下面的 rsyncd.log 这个文件。这个文件也需要注意一下,就是长时间的同步操作后,这个日志文件可能会很大,所以你最好每隔一段时间就手工删除一下。当有人要用rsync客户端时行同步时,这个日志文件你是删除不掉的,只有在没有人使用的时候才可以删除掉的。
这样服务端的就安装成功了,然后就可以用Rsycn 的客户端去连接服务器进行同步操作了。Linux平台不需要你安装,系统默认就安装了,Windows下面你也先要安装一下客户端,客户端的安装包安装过一次之后,你可以把那些己经安装好的文件全部copy到其它要用的机器上,客户端可以直接copy过去使用的。copy到任意目录下面,然后启动一个 cmd窗口,切换到rsync.exe所在的目录,然后输出以下命令:
rsycn -avrDztopg --force --delete 192.168.100.10::test/abc/ /cygdrive/c/abc
这条命令的意思是根据192.168.100.10这台机器上的c:\work\abc目录下面的所有内容同步到本地的c:\abc目录中,如果发现在本地的c:\abc中存在的文件而在服务器上没有的,则强制把本地这些多余的文件删除掉,其它的参数大家可以看看那个中文帮助手册,里面有详细的说明。