Web性能优化实践

本文主要针对Tomcat+H5游戏的性能优化,优先考虑响应时间
文后附有Apache+PHP的优化方法

减少HTTP请求

  1. 减少网站上的对象数量
  2. 最小化网站上的重定向数量
  3. 使用CSS Sprites技术
  4. 结合JavaScripts和CSS

图片压缩

PNG Compression
JPG Compression

CSS minify

Minify and Compress CSS
Css Minifier

JS minify

Minify and Compress JS

HTML minify

HTML Minifier
Html Compressor

ExpiresFilter设置资源缓存

此是针对Tomcat的优化,其他服务器应用不一样
conf/web.xml文件中

    <filter>
    <filter-name>ExpiresFilter</filter-name>
    <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
    <init-param>
    <param-name>ExpiresByType image</param-name>
    <param-value>access plus 1 month</param-value>
    </init-param>
    <init-param>
    <param-name>ExpiresByType text/css</param-name>
    <param-value>access plus 1 week</param-value>
    </init-param>
    <init-param>
    <param-name>ExpiresByType application/javascript</param-name>
    <param-value>access plus 1 week</param-value>
    </init-param>
    </filter>

    <filter-mapping>
    <filter-name>ExpiresFilter</filter-name>
    <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>

GZIP压缩与HTTP 持久连接

此是针对Tomcat的优化,其他服务器应用不一样

在 Tomcat 里是允许配置长连接的,配置 conf/server.xml 文件,配置 Connector 节点,该节点负责控制浏览器与 Tomcat 的连接,其中与长连接直接相关的有两个属性,它们分别是:keepAliveTimeout,它表示在 Connector 关闭连接前,Connector 为另外一个请求 Keep Alive 所等待的微妙数,默认值和 connectionTimeout 一样;另一个是 maxKeepAliveRequests,它表示 HTTP/1.0 Keep Alive 和 HTTP/1.1 Keep Alive / Pipeline 的最大请求数目,如果设置为 1,将会禁用掉 Keep Alive 和 Pipeline,如果设置为小于 0 的数,Keep Alive 的最大请求数将没有限制。也就是说在 Tomcat 里,默认长连接是打开的,当我们想关闭长连接时,只要将 maxKeepAliveRequests 设置为 1 就可以。

conf/server.xml文件中

<!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 -->
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" maxKeepAliveRequests="20" keepAliveTimeout="20000" redirectPort="8443" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla,traviata" compressableMimeType="textml,text/xml,text/javascript,text/css,text/plain, application/JSON" useSendfile="false"/>

Web性能优化实践_第1张图片

bin目录

./shutdown.sh
./startup.sh

做完上述优化工作后
PageSpeed Score Yslow都能达到很高的值
Web性能优化实践_第2张图片

但是我不设置资源缓存
Web性能优化实践_第3张图片

两者的PageLoad Time 差很多!!!(疑惑中

JVM java虚拟机

增大内存,可减少并发造成的HTTP延时,增加吞吐量
JVM原理和优化

参考网址:

WordPress优化之开启Gzip压缩
Web前端性能优化实践
一次WEB前端优化尝试
tomcat 启用Gzip 压缩进行优化
Tomcat性能调优 通过ExpiresFilter设置资源缓存
GTmetrix检测网站性能并根据提示进行相应的优化
优化网站加载速度的14个技巧 注:PHP

Content Delivery Network (CDN)
CDN服务提供商
cookie-free domains
Best Practices for Speeding Up Your Web Site
Java Web performance – part1
Java Web performance – part2

环境Apache+PHP

.htaccess 文件增加

    #解决的问题是header Specify a Vary: Accept-Encoding header 

    <IfModule mod_headers.c> 
    <FilesMatch ".(js|css|xml|gz)$"> Header append Vary Accept-Encoding </FilesMatch> 
    </IfModule>


     #解决的问题是浏览器缓存 Leverage browser caching 

     # JV注释:开启缓存到期以及默认到期时间为0,格式为:A秒(下同) ExpiresActive On ExpiresDefault A0 
     # 设置媒体文件缓存时间为1年 
     <filesmatch "\.(ico|mp3|wav)$"> ExpiresDefault A29030400 Header append Cache-Control "public"
     # 设置媒体图片文件为1周 
     <filesmatch "\.(gif|jpg|png)$"> ExpiresDefault A604800 Header append Cache-Control "public" 
     # 设置常规文件为2小时 
     <filesmatch "\.(html|js|css)$"> ExpiresDefault A7200 Header append Cache-Control "proxy-revalidate" 
     # 强制不缓存动态文件 
     <filesmatch "\.(php|htm)$"> ExpiresActive Off Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform" Header set Pragma "no-cache" 

你可能感兴趣的:(Web,GZip,性能优化,http持久连接)