ターミナルで使える便利コマンドメモ(サイト速度・DNS・画像)

ターミナルで使える便利コマンドメモ(サイト速度・DNS・画像)

ターミナルで使える便利コマンドメモ(サイト速度・DNS・画像)

サイトの速度やDNSを調べるときに使った、ターミナル(Mac)のコマンドのメモです。example.com の部分は、調べたいドメイン名に置き換えて使います。

1. キャッシュとCDNを確認する

Cloudflareのキャッシュが効いているか

curl -sI https://example.com/ | grep -iE "^(cf-cache-status|age)"

2回続けて実行します。1回目が MISS(キャッシュなし)、2回目が HIT(キャッシュから返した)になれば成功です。age は、キャッシュに置かれてからの秒数です。

どのCDN・どの拠点から返っているか

curl -sI https://example.com/ | grep -iE "^(server|cf-ray|cf-cache-status|x-qc-pop|x-qc-cache)"

server: cloudflare ならCloudflare経由です。cf-ray の末尾が拠点の空港コードです(KIX=大阪、NRT=東京、SIN=シンガポール、PDX=ポートランド)。x-qc-pop が出れば、QUIC.cloud経由で、そのPOP名が拠点です(例: AS-JP-HND-HYBRID-141=羽田、AS-IL-TLV-261=テルアビブ)。

2. 表示の速さ(TTFB)を測る

curl -s -o /dev/null -w "connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer}\n" https://example.com/

connectは接続まで、tlsは暗号化の準備まで、ttfbは最初の1バイトが届くまでの秒数です。1回目は遅めに出ることがあるので、3回続けて測ります。

for i in 1 2 3; do curl -s -o /dev/null -w "connect:%{time_connect} ttfb:%{time_starttransfer}\n" https://example.com/; done

世界の複数の地点から測るなら、PageVitalsのTTFB Tester(東京・大阪などを選べます)が便利です。測り直すときは、パージ(キャッシュ消去)をしないほうが、安定した数値が出ます。

3. DNSを調べる

dig +short NS example.com     # ネームサーバー
dig +short A example.com      # サイトのIPアドレス
dig +short MX example.com     # メールの受け取り先
dig +short TXT example.com    # SPFなどの設定

ネームサーバーを変えたあとは、dig +short NS に新しい名前(例: xxx.ns.cloudflare.com)が出れば、切り替わっています。

古いDNSの答えが残っているとき(Mac)

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

4. サーバーのIPに直接つないで確かめる

curl -sI --resolve example.com:443:サーバーのIP https://example.com/

DNSの設定を変える前に、そのIPが本当にサイトを返すか確認できます。200 が返り、server などが期待どおりなら、そのIPは正しいです。

5. 自作のコマンド(~/.zshrc に登録)

ターミナルを開くたびに自動で読み込まれる設定ファイル ~/.zshrc に、次を書いておくと、短い名前で使えます。書き換えたあと、いま開いているターミナルに反映するときは source ~/.zshrc を実行します(新しく開き直せば不要です)。

qcpop:拠点・キャッシュ・自分の公開IP・秒数をまとめて見る

qcpop example.com

この内容(自作コマンドのスクリプト)は、ログインした会員だけに表示されます。ログインはこちら

QUIC.cloud経由のサイトなら、x-qc-pop(拠点)と x-qc-cache(hit=拠点が持っていた、miss=オリジンまで取りにいった)が出ます。それ以外のCDN(Cloudflareなど)では、この2行は出ません。

imgsmall:画像を縮小してWebPにする(元のファイルは変更しない)

imgsmall() { python3 ~/bin/imgsmall.py "$@"; }

この内容(自作コマンドのスクリプト)は、ログインした会員だけに表示されます。ログインはこちら

imgsmall 画像のパス            # 800px幅・画質72(初期値)
imgsmall 画像のパス 768 75     # 幅と画質を指定

同じ場所に 元の名前-800w-q72.webp のような名前で保存されます。650KBの画像が、約70KBになった実績があります。画像のパスは、Finderからターミナルにドラッグ&ドロップすると入力できます。本体のスクリプト(~/bin/imgsmall.py)は、Pythonの画像ライブラリ Pillow を使います。

画像を軽くするときの目安: 縮小の効果が大きく(画素数が減る)、そのうえで画質を70〜75程度にします。PNGは軽くなりにくいので、WebPやJPGに変えてからアップロードします。

6. 画像の形式を比べる(JPEG・WebP・AVIF)

同じ画像を、同じ大きさに縮小して、形式ごとの容量を測りました(Pillowで変換)。AVIFは、WebPより一段小さくなる傾向があります。

画像JPEG q80WebP q72AVIF q50AVIF q40
ヘッダー画像(800幅)107KB70KB56KB41KB
アイキャッチA(768幅)197KB117KB81KB61KB
アイキャッチB(768幅)188KB114KB78KB58KB
  • 画質の数字は、形式ごとに基準が違います。AVIF q50〜60が、WebP q72前後と同じくらいの見た目の目安です。画像ごとに、目で確認します。
  • AVIFは、変換に時間がかかります。古い機器では表示できないことがあり、対応の広さはWebPのほうが上です。
  • WordPress(6.5以降)は、AVIFのアップロードに対応しています。ただしCDNやプラグインの組み合わせで表示されないことがあるので、アップロード後に、サイトで表示を確認します。
  • 差は数十KBなので、普段はWebPで十分です。さらに軽くしたいときに、AVIFを試します。

PillowでAVIFに対応しているかの確認と、保存の書き方です。

python3 -c "from PIL import features; print(features.check('avif'))"   # True なら対応

# 保存の例(Pythonの中で)
# im.save("out.avif", "AVIF", quality=50)

コメントする

パブログ

パパのブログ、パブログマイクラバージョンロゴ
STAY CONNECTED
リンク

強力パスワード生成