Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NIFTY Tech Talk #09 ニフティトップのNext.jsでのキャッシュ戦略を考えた話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ニフティ株式会社
PRO
March 08, 2023
Video
Resources
Programming
0
1.3k
NIFTY Tech Talk #09 ニフティトップのNext.jsでのキャッシュ戦略を考えた話
ニフティ株式会社
PRO
March 08, 2023
Tweet
Share
Video
Resources
SvelteKit, Next.jsの導入事例紹介など 〜ニフティのフロントエンドの今とこれから〜 - NIFTY Tech Talk #9
https://nifty.connpass.com/event/273568/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
なぜISPでオリジナルカードゲームを作ったのか?制作者と対談 - NIFTY Tech Talk #25
niftycorp
PRO
0
63
「なぜかネットが遅い」を“見える化”する 〜マイ ニフティが繋ぐサポートと暮らし〜 - NIKKEI Tech Talk #39
niftycorp
PRO
0
390
InnerSource Summit 2025 Three points that promoted innersource activities
niftycorp
PRO
0
210
Maker Faire Tokyo 2025 出展うらばなし - NIFTY Tech Talk #25
niftycorp
PRO
0
87
Private Status Pageの設定と活用 〜インシデントレスポンスへの活用とStatus Page運用をどうするか?〜
niftycorp
PRO
0
140
ニフティのPagerDuty活用状況
niftycorp
PRO
0
120
会員管理基盤をオンプレからクラウド移行した時に起きた障害たち - asken tech talk vol.13
niftycorp
PRO
0
2.6k
モニタリング統一への道のり - 分散モニタリングツール統合のためのオブザーバビリティプロジェクト
niftycorp
PRO
1
1.1k
2025-07-08 InnerSource Commons Japan Meetup #14 【OST】チームの壁、ぶっ壊そ!壁の乗り越え方、一緒に考えよう!
niftycorp
PRO
0
120
Other Decks in Programming
See All in Programming
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
380
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
AI & Enginnering
codelynx
0
120
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.6k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
760
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
310
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
140
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
120
GraphQLとの向き合い方2022年版
quramy
50
14k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
100
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
The SEO Collaboration Effect
kristinabergwall1
0
350
For a Future-Friendly Web
brad_frost
182
10k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
Typedesign – Prime Four
hannesfritz
42
2.9k
The Spectacular Lies of Maps
axbom
PRO
1
520
Transcript
Copyright © NIFTY Corporation All Rights Reserved. ニフティトップのNext.jsでの キャッシュ戦略を考えた話
佐々木 優 会員システムグループ
Copyright © NIFTY Corporation All Rights Reserved. 2 あらためて自己紹介
ニフティ株式会社 佐々木 優 • 新卒入社4年目 • @niftyトップページ開発/運用 • 自転車・国内旅行にハマり中
Copyright © NIFTY Corporation All Rights Reserved. キャッシュとは何か? 3
Copyright © NIFTY Corporation All Rights Reserved. キャッシュとは? •
一度利用したブラウザやサーバー側にあるデータを 一時的に保存する機能 キャッシュの種類 • ブラウザキャッシュ • CDNのキャッシュ など ※CDN = サーバーからの応答を 肩代わりするためのもの 4 キャッシュの概要
Copyright © NIFTY Corporation All Rights Reserved. 5 キャッシュの目的
コスト削減 • 画像などのコンテンツをキャッシュさせることで サーバー側へのリクエストにかかるコストを削減できる インフラリソースの負荷軽減 • ブラウザやCDNを用いることでサーバー側への負荷を肩代 わりできる パフォーマンス向上 • 銀の弾丸ではないがWebページのレスポンスタイムを減らす ことができる
Copyright © NIFTY Corporation All Rights Reserved. 6 キャッシュの目的
コスト削減 • 画像などのコンテンツをキャッシュさせることで サーバー側へのリクエストにかかるコストを削減できる インフラリソースの負荷軽減 • ブラウザやCDNを用いることでサーバー側への負荷を肩代 わりできる パフォーマンス向上 • 銀の弾丸ではないがWebページのレスポンスタイムを減らす ことができる
Copyright © NIFTY Corporation All Rights Reserved. @niftyトップページでも キャッシュ戦略を考えてみました!
7
Copyright © NIFTY Corporation All Rights Reserved. サイトの概要 •
ニフティの会員向けポータルサイト • 月間82万UU、1,989万PV!! ※2023/01実績 • 2022年7月にシステム基盤刷新を行った ◦ ReactベースのNext.js + Serverless Framework + CDN構成 詳細は 『NIFTY Tech Talk #4 レガシーシステムからの脱却』を ご参照ください! https://www.youtube.com/watch?v=Ttium-UNEEU 8 @niftyトップページについて
Copyright © NIFTY Corporation All Rights Reserved. CDNのキャッシュ •
CloudFront • Serverless Framework(Next.jsをサーバレス環境へデプロイ するために使用) ブラウザキャッシュ • 基本はNext.jsで管理 9 @niftyトップページキャッシュ構成
Copyright © NIFTY Corporation All Rights Reserved. CDNのキャッシュ •
CloudFront • Serverless Framework(Next.jsをサーバレス環境へデプロイす るために使用) ブラウザキャッシュ • 基本はNext.jsで管理 10 @niftyトップページキャッシュ構成
Copyright © NIFTY Corporation All Rights Reserved. CDNのキャッシュ •
CloudFront • Serverless Framework(Next.jsをサーバレス環境へデプロイす るために使用) ブラウザキャッシュ • 基本はNext.jsで管理 11 @niftyトップページキャッシュ構成 ブラウザ→CloudFront へのリクエスト料金が発 生💰
Copyright © NIFTY Corporation All Rights Reserved. CDNのキャッシュ •
CloudFront • Serverless Framework(Next.jsをサーバレス環境へデプロイ するために使用) ブラウザキャッシュ • 基本はNext.jsで管理 12 @niftyトップページキャッシュ構成 ブラウザ→CloudFront へのリクエスト料金が発 生💰
Copyright © NIFTY Corporation All Rights Reserved. CDNのキャッシュ •
CloudFront • Serverless Framework(Next.jsをサーバレス環境へデプロイ するために使用) ブラウザキャッシュ • 基本はNext.jsで管理 13 @niftyトップページキャッシュ構成 よりユーザーに近い位置でのキャッシュ CDNへのリクエストも軽減できる 💪 ブラウザ→CloudFront へのリクエスト料金が発 生💰
Copyright © NIFTY Corporation All Rights Reserved. どうキャッシュさせるのが良いか?
14
Copyright © NIFTY Corporation All Rights Reserved. キャッシュするもの
• 画像やCSS、JSファイルなどあまり更新されない コンテンツはキャッシュさせる! • 特に画像はデータ転送量が大きいので効果大 • Next.jsでは静的コンテンツはデフォルトでキャッ シュされる設定になっている 15 キャッシュ戦略①
Copyright © NIFTY Corporation All Rights Reserved. キャッシュさせないもの
• APIなどユーザーによって返される内容が異 なるものはキャッシュさせない! • @niftyトップページにはログイン機能があり多 数の枠で利用している • 安全側に倒す方針を採用 16 キャッシュ戦略②
Copyright © NIFTY Corporation All Rights Reserved. 設定はなるべくシンプルに
• まずはシンプルに考える! • CDNとブラウザで同じキャッシュ設定に • できるだけユーザーに近い部分でキャッシュ させる 17 キャッシュ戦略③
Copyright © NIFTY Corporation All Rights Reserved. 無事リリース完了! 一見問題無さそうだが...
18
Copyright © NIFTY Corporation All Rights Reserved. next/imageの画像のブラウザキャッシュが短く設定されて いた
• next/image →Next.jsで画像を最適化してくれる技術 • 本来不要なリクエストが発生 →CloudFrontのコストも増加 • Severless Frameworkのデプロイ時に Next.jsのキャッシュ設定が上書きされててしまう 19 失敗談①
Copyright © NIFTY Corporation All Rights Reserved. 対処 •
Next.jsでブラウザキャッシュを効かせるためのルール を追加 next/imageのブラウザキャッシュを直接指定してみる 20 失敗談② async headers() { return [ { source: '/_next/image:slug*', headers: [ { key: 'Cache-Control', value: 'public, max-age=31536000, must-revalidate', }, ], }, } 例) next.config.js
Copyright © NIFTY Corporation All Rights Reserved. 結果 •
無事にnext/imageのブラウザキャッシュが効いた! • CloudFrontへのリクエストが減った! • 1000USD/月 程度のコストを削減できた! 21 どうなったのか?
Copyright © NIFTY Corporation All Rights Reserved. Good •
事前にキャッシュパターンを決めていた Bad • リリース後に正しくキャッシュが設定されているかの チェックが抜けていた • CloudFrontのコスト増加に気づけなかった Try • リリース後にはキャッシュ設定のチェックを行う • 普段からCost Explorerなどでコストを把握する癖をつける 振り返り① 22
Copyright © NIFTY Corporation All Rights Reserved. 振り返り② Learn
• 静的コンテンツはなるべくブラウザキャッシュさせる →更新頻度の低いコンテンツをまとめて管理できる設計 • キャッシュを常に把握できる状態にしておく →今の設定が本当に正しいのか?を検証可能に • 全てを一度に設定しようとしない →キャッシュなしの設定から徐々にキャッシュさせていく 23
Copyright © NIFTY Corporation All Rights Reserved. おわりに まとめ
• @niftyトップページでキャッシュ戦略考えた • キャッシュを正しく把握/設計することでインフラコストの削減に 繋がった • 失敗談から得た知見について 24
Copyright © NIFTY Corporation All Rights Reserved.