5月 302015
 

DevTools



PC
NW

ChromeLTE3GNW
iPhone6(LTE)偽装 11.82sec 4.8MB

iPhone6(LTE)偽装 11.82sec 4.8MB

例えばこのサイトはスマホページで4.8MBもダウンロードしています。
通信環境の悪いところで快適に閲覧できるようなサイトでしょうか?

iPhone6(LTE)偽装 2.8min 83.6MB

iPhone6(LTE)偽装 2.8min 83.6MB

このページに関しては13回見るとキャリアの制限に達するというそもそも論外なレベルです。

PC(FTTH) 25.06sec 11.2MB

PC(FTTH) 25.06sec 11.2MB


PC

SNSPixiv
PC4.07sec 3.2MBiPhone6(LTE)3.58sec 1.1MB



wifi

使(2006)Amazon0.11%


(INM/IMS)


Cache-Control/Expires

CSSjs
304 Not Modifiedいっぱい

304 Not Modifiedいっぱい


If-None-Match(INM)If-Modified-Since(IMS)
INMETagIMSLast-Modifiedcache-control/Expires
使
Cache-Control/Expires/ETag/Last-ModifiedHTTP
Cache-ControlETag/Last-ModifiedINM/IMS使

TTL
使TTL

URL(ex: hoge.js?20150526)

TTL
TTL

GoogleAnalyticsより例

GoogleAnalyticsより例

見てる間に不要なダウンロードが発生しなければ良いのでそれに合わせてしまえば比較的短く、そして効果的なクライアントキャッシュが出来るでしょう。
もちろんこれは小手先の対応で最終的にはURLを変える対応を行ってTTLは長めに設定するのが良いです。

そのETag適切ですか?

とあるサイトを見ていると304に混じって毎回何故かダウンロードしているものを見つけました。
そこで原因を調べてみるとファイルが更新されていないのにETagが変わるのを発見しました。

ハッシュ値が同じなのにETagが違うファイル

ハッシュ値が同じなのにETagが違うファイル

先ほどのリソースのリクエスト数を減らそうでも触れましたがINMではキャッシュで保持しているETagをサーバにリクエストして更新があればダウンロードを行うものです。
そのためETagが変われば更新されているものとしてダウンロードがされてしまいます。

同じファイルなのにETagが違うためボディを取得した例

同じファイルなのにETagが違うためボディを取得した例


js/csscache-control304
Deploy
ApacheETagINode-MTime-Size()
INode
ETag
INode使OK
deploy(MTime)
deployrsync-t

gzip


jquery.js(1.11.2)gzipApacheNginx
gzip Size Per
Off 95,952B(94KB) 100%
On 33,287B(33KB) 34.7%

CSSjs


2015/11/02
AmazonS3cssjsgzip
css/jsS3
js1MB

調


JPG(q)調(PNG調)
q

q=100の画像のクオリティを下げていった場合のファイルサイズ
q=100

q=90web使

q=100
q=100 / 368KB( )


q=90
q=90 / 122KB


q=80
q=80 / 81.2KB


q=70
q=70 / 63.6KB

q=1

q=1 / 6.4KB

どれ位サイズが小さくなるかは画像によって違いますし
どの程度のqが必要かはサイトの特性に対する考慮、その他ベンチマークをする必要はありますが普通は90もあれば十分綺麗です。80でもよく見なければ気づきにくいとおもいます。
また当然のことなのですが元々qが低い画像のqを上げた場合も無意味です。

q=1のものを100にした画像 (30.8KB)

q=1のものを100にした画像 (30.8KB)


q9090調

 / 




100%10%q=100

10%刻みで小さくしてみた
10%


MW

PNG()


(JPG/q=100)PNG(24bit)
JPG(q=100 667×500) PNG(24bit 667×500)
313,885B(306KB) 597,334B(583KB)

8bit(256)

PNG8(256Color) / 186KB
PNG8(256Color) / 186KB

q
tooltipPNG8

PageSpeed Insights


PageSpeed Insights
PageSpeed Insights

Google

ApacheMPM


ApachePHP使mod_phpPrefork
Prefork11
worker(worker11)
Prefoek
使
workerprefork

prefork

MWNginxApacheVarnish使Varnish 



LLbuzz

LLjsESI
 

サーバ情報を隠そう

パフォーマンスとは関係ありませんが
単純に危ないので不要な情報(特にバージョン情報)は消すようにしましょう。

phpのバージョンまで出てる

phpのバージョンまで出てる

HTTPS(SSL/TLS)の設定を確認しよう


POODLEHeartbleedLogjamFREAKHTTPS
GlobalSignQUALYS SSL Labs
GlobalSignSSL Labs


SSL使用をアピールしてるものの設定は・・・
SSL使

SSL Labs

SSL Labsは環境のシミュレーションをやってくれる
SSL Labs

AndroidA

Vary(2017/02/17)


CDNVary
Vary: Accept-Encoding

Accept-EncodingAccept-Encoding
cssjsgzipgzip
Varygzipcssgzipgzipcss
Vary使URLAccept-Encoding

便User-Agent(UA)
PCURL

User-Agent
AndroidUA


VaryUA
UAMiss
UAgzipAccept-Encoding
CDN(PC/
CDN使Vary

CDN/


CDN/
1

100%
CDN/(/CDN=)





mysql




ESI
Varnish
SSL
SSL 
Web#5

 Posted by at 3:44 PM

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください