本文主要针对Tomcat+H5游戏的性能优化,优先考虑响应时间
文后附有Apache+PHP的优化方法
减少HTTP请求
- 减少网站上的对象数量
- 最小化网站上的重定向数量
- 使用CSS Sprites技术
- 结合JavaScripts和CSS
图片压缩
PNG Compression
JPG Compression
CSS minify
Minify and Compress CSS
Css Minifier
JS minify
HTML minify
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"/>
bin目录
./shutdown.sh
./startup.sh
做完上述优化工作后
PageSpeed Score 和Yslow都能达到很高的值
但是我不设置资源缓存
两者的PageLoad Time 差很多!!!(疑惑中)
JVM java虚拟机
增大内存,可减少并发造成的HTTP延时,增加吞吐量
JVM原理和优化
参考网址:
WordPress优化之开启Gzip压缩
Web前端性能优化实践
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"