Webパフォーマンスの最適化の実践


本文は主にTomcat+H 5ゲームの性能最適化に対して,応答時間文の後にApache+PHPが付く最適化方法を優先的に考慮する.
HTTPリクエストの削減
  • Webサイト上のオブジェクト数を減らす
  • Webサイトのリダイレクト数を最小化
  • CSS Sprites技術
  • を使用
  • 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ファイルは、ブラウザとTomcatの接続を制御するコネクタノードを構成し、長い接続に直接関連する2つの属性があります.これは、コネクタが接続を閉じる前に、コネクタが別の要求Keep Aliveに待機している微妙な数であり、デフォルト値はconnectionTimeoutと同じです.もう1つは、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–part 1 Java Web performance–part 2
    に付随
    環境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"