続いてのセッションですけれども こちらはミキトールさんによるワードプレッドサイトに関わるキャッシュを理解するというタイトルでお送りいただきます ミキさんには 一般的にはちょっと難しいと思われているキャッシュについて まずどんなものの中というところから実際にどういうふうに扱っていくべきなのかなど 技術面含めてお話いただくウェブ制作を続けて 少し時間の経った方にとって有益な情報を得られるセッションになっておりますはい それでは ミキさん よろしくお願いいたしますはい こんにちは よろしくお願いしますもうね 4時過ぎに こんな技術の話をすると頭に入って後編と思うんですけど まぁ 願いしますはい キャッシュですねそうですね 4、5年ぐらい前までは僕もキャッシュっていうのを 単純にウェブサイト早くするものだと思っててちょっと面倒ややこしい なんかあったらとりあえずわかんないくてキャッシュフラッシュとか ブラウザーキャッシュリセットとかなんかそんなことをしてって感じですねで 4、5年ぐらい 5年近く前かな転職して タロスカイっていう会社に今いるんですけどそれで僕はじめて自宅 クライアントワークの仕事に入りましたで使ってるサイトはちょっと規模が大きめで具体的には 月間のPVが数千万 中に奥超えるとかもありますし投稿数も50万件あるとか データベースダンプするとなんか5Gbとか 10GbのSQLとかそういう規模感ですで そういうサイトをやっているとキャッシュっていうのが結構重要なピースになってこのキャッシュはうるさいと早くするなみたいなこれはほぼ僕理解度ゼロ 理解してないに等しいぐらいだなっていうにすごい認識を持って色々と キャッシュがいろいろとかなりまだ見直したんですけど この4、5年でキャッシュはその中でも 結構手付けて学び直したものの一つです自分で学んだり 後は教えてもらったりしてですね 社内でそれをしてくると 結構キャッシュが強すぎとかキャッシュが効き過ぎっていう言い方が効くと思うんですけどこれほぼキャッシュについて 理解ゼロな感じのあれだなっていうのはよくわかってきてで そんなサイトをやってませんよっていう方も動いと思うんですけど それがない規模感っても結構最近のワードプレスコアの改善とかもこの辺のことの話だったりするしまあ別にワードプレス関係なくインターネット大技術として 必要に重要なところなので最後まで聞いていただけると いうようなことを伝えできるんじゃないかなと思うのでお付き合いくださいまず3つ 大体大まかに置かれて最初の2つが巻きそうみたいな部分のところですね集中力を2の終わりぐらいまで 保っていただけるとありがたいなっていう気がしますで まずキャッシュとはこれ どっかに完結な良いのがないかなと思って探してきた結果がAWCになったので実はこれ英語でも日本語でも 同じコンガ感じなんですけどキャッシュにより 以前に取得または計算されたデータを効率的に再利用できようになります僕今これを見ると そうだよねなんですけど多分 若干 そうじゃなければ思考でもかなり チンプンカンプンだったと思いますこれどういうことかというと こういうことなんですよねリクエストが 左の向こうが入ってきます次に何かのプログラムとかで 何か取得データの取得とか あるいは何かの計算をしますそうやってできたところか データが出てきて最後 アウトプットがありますこれが最初アウトプットの場合もあるし向こうにまた次の処理に渡されるときがあります要は取得 計算が遅いかもしれないなので この処理を改善する処理を改善するのは根本的な解決なので需要なんですけど それはそれとしてこれが特に何回も同じことを 繰り返すになったらむしろ出てくるデータは 再利用できるかなっていうかしこいことを考えた方がいらっしゃるんでしょうね要はそれです このデータを再利用するために保存しますその保存されたものをキャッシュって言いますリクエストが来たら 処理で キャッシュあるないと聞いてキャッシュあるでって言ったら キャッシュを改して次の処理につなげたりします なので キャッシュがある場合は上の部分のこの処理をスキップします 要するにそのリクエストに対してのより早く 答えることができるっていうのがキャッシュの一番下の根本的な仕組みですねキャッシュを保存してキャッシュする アルカナイカを確認するそれを渡すみたいなその処理の部分を キャッシングっていうようなんですがこれ英語でも日本語でもそうで 特に日本語の前そうなんですけどキャッシングのこともキャッシュって 書かれてたりしますキャッシュのこともキャッシュで キャッシングキャッシュでこれによくわからんけど全部キャッシュで みたいにキャッシュって言われてますそこがわけのわかんなくなる ところの一つでありますこれ結構重要なことなんで 例え話をしますここ日本なんで何のことか説明不要 だと思うんですけどこの三つのやつでマグロニギリ 一家を作って作ると僕は素人なのであの三つの材料 が用意されていてもマグロニギリさんくださいと言われて 握るのに3分かかるとしますそこから皿を取っておいて 私の今5秒かかるとします3分5秒 あんた落とすギアでそれって 言われるわけですよどうするかって言ったら握る 3分5秒かかってるやつをもうちょっとどうにかするっていう のが一つですよねさっきのコンポンティー改善って 一緒で僕が頑張って文字ってうまくなるようにするか 僕を首にしてもうちょっと金払っていい人にやってもらうっていう のが一つそれはそれとして遅いなりに 作り置きしてたがどうかなっていうか20巻用意しておきますちょっと材料と事前に作り 置きして準備しとかちょっと厳密には違うんですけど 効果は同じようなもんだとしてにはマグロ一巻ちょうだいって 言われたはいって言ってもうおさえ乗せ5秒だけでおしまい なんかリクエストには早く答えるって言われますその20巻用意しておくとそれが すごく有効な時間帯っていうのがありますちょっと考えてみます 水のみたいにその時間帯は混雑時ですね 昼ごはん時とかこれがすごく聞いてくる 僕 寿司屋でバイトもしたことないんですけど 多分そんなもんせんかなと思いますなのでキャッシュがもたらす効果 っていうのはリクエストに対するレスポンスがより早くなるように 助けてくれます要はこれはパフォーマンスを 助けてくれるってことですねより多くのリクエストを同時に 処理できるように助けてくれますスケーリングですね スケーリング 対して助けてくれるあと構成によるんですけど サーバー 費用を節約できる場合がありますこれレンタルサーバーとかだと ほぼ関係ない話ですねどっちかちょっとAWSとか Googleの クラウドとかクラウドの場合の話になってきますまたらさない効果は 根本的な パフォーマンスの問題は解決してくれないことです解決の姿勢で言うと どんだけ 100間でも200間でも用意してようが僕が3分握りのにかかる っていうのは変わらないって話ですねここまで僕の説明が構想して ですねそんなに小難しい話ではない ような気がするんですね事前準備しとくってことが要は なぜデータの再利用っていう比較的シンプルなコンセプトがある と思うんですけどそれが実際のカサイとかアイスとか 運用保守とかでは結構難しく感じて 要は分からんくなってくる ですねややこしい 要は分からんから フラッシュとかパージとかしてとりあえず連打して削除するなんでこんなことになるのか っていうのを僕なりに紐を解いて見るとまずキャッシュキャッシュ って言ってるものには種類も数も複数があります 一つじゃないんです いっぱいありますそれと一緒にキャッシュのトレード オフとして設計と実装時に考えないあかんことがちょっと増えるん ですよねそれが駆け合わさって結果的に システム全体で複雑化しますあとはさっきもちょっとキャッシュ の言葉で言ったんですけどあやふやな用語の使い方とか マーケティング目的で固調されて言われてたりとか いったこれどのキャッシュのこと言ってるんだろうみたいな そういう あやふやなこれ普通に何かのドキュメント でもそうなんですよワードプレス関連でグッてどっか の会社書いた説明書でもこんななったらそうですよ っていうか公式のドキュメントもなったりします なので要は全く 助けになっていないんじゃないかっていうのもややこしくしている 一員だと思いますキャッシュには処理も数も複数ある っていうことなんですけど処理まず保存される場所ですね それから利用されている技術インフラ側の構成とか使用にも 変わってきますワードプレスのコアがやっている もんなんか カスタムですねプラグインとか自分で実装した とか そういうカスタムなのかって言われます 同じ種類のキャッシュ につき複数のキャッシュが存在しうります 保存されている場所 インフラ側に変わって全部一緒なんだけど それは この時のクエリのためとかコラコンの時の距離にいろいろ ありますで これ ブラウザからワードプレスに アクセスすると起きる経路 ここと 経路 一番左がデバイスですよねそこはネットワーキング上に これある場合 内部はCDNとかプロキシーがあって ここ オリジンのサーバーの中ですオリジンサーバーの中にはウェブサーバー があって これがアパッチとかエンジンクスとかを使って PHPが走り ワードプレスがデータベースからたり取ってきて メモリーに入れ たりとかして 最後出す 出力するっていう感じですね ここに 僕が知っているキャッシュももに仕事で使ったりするキャッシュ を載せます 全部を毎回すべてのサイトでやってるっていうわけじゃないんです けど その時使ってるサーバーにもよる話ではあるんですが ももね こんな感じですブラウザの方にブラウズキャッシュ があって シネームキャッシュがありあとページキャッシュという ものがあり その辺にかかってくるHTBキャッシュっていうのがあって PHPオブキャッシュ オブキャッシュ後でいくつか話します 要は ここで使うような青くなってるやですね下のWPオブキャッシュ トランジェントキャッシュあとブラウザ&とかはHTBキャッシュ この辺はどんなサイトでも必ずあります レンタルサーバーも スポンサーさいますけどそれにとても500円のレンタルサーバー 簡単にしておるポチフレッシュのやつが立ち上がりじゃない ですか その時状態で時点ですでにあります かかってきます なので 必ずあるものですそれがいろんな種類があるって こうですね 設計と実装人コールをしなければならない ことが増えるというのは 一番大きい難しいのが キャッシュのインバリデーションと生成の戦略です ちょっと次のスライドでインバリデーションが何かを 説明しますがワードプレイスのプラグイン とかで頼っているとよくパージするとか フラッシュする っていう言葉を聞くんですけど一般的なワードプレイスじゃない キャッシュのことをいろいろ見はめじめると その言葉はあんまりでこれが頻繁出てきます インバリデーショントレードオフです これも組織さん仕方ないもんですねで 正解がないんです あんまり パターンはありますでも戦略によって その正解というのがないってありますあとはエラーじゃないんですよね キャッシュが何かキャッシュが残ったまま みたいなやつはエラーじゃなかったりするんです それってそういう実装をしているので 残ったままでPHPエラーみたいな 興奮エラーとか 出てこないんですねエラーログに なのでよく分からない出幕が難しいときはある もちろんそうなってる理由が 例えば何か 自分で使えたコードのバグだったりするときはあります ただそのバグの理由が興奮エラーとかじゃなくって 設計がだめだったいわゆる設計と そもそも 設計としそがだめだったっていう場合があるんで 難しいんですあとは他にも 当たり前のコストとかありますインバリデーション キャッシュはこれ別に いろんなキャッシュのどこで出てくるアイデアなんですけどフレッシュとステイルっていう 2つの状態がありますフレッシュは新鮮です ステイルは新鮮でないで デフォルトがスレッシュなのでインバリデーションっていうのは キャッシュがステイルな状態であると判定し取り除くことにより 無効化することをさします難しいのは いつ どのように 新鮮じゃないかって判定するのが実は結構難しかったりします難しい場合のキャッシング技術 闘争じゃない場合もありますまたややこしいことですね大体無効化っていうと 大体削除なんですが取り除く処理になって それを今度 いつ生成するのかっていう話になりますキャッシュがなくなった じゃあ それはそのままで行きですかいつ生成しますか それは次リクエスト来たときですかいや それは困るので 先に生成しときたいですかいや そもそもキャッシュがない状態は 作りたくないみたいなそういう話なのでそれを考えて 考慮して実装していくのが難しいいや 難しい 複雑になり 何がちなとこですねあと 生成部分ですねそのさっきって言った 根本的な部分がすごい重い処理が すんごい時間かかる場合だったらそのキャッシュを作ることに 時間がかかる 負荷がかかるそれだけでサイトが落ちます みたいなぐらいのもんだったらいや そっちのほうやんなかりみたいなことですよねまあ そういうことも考えなきゃいけないですまた スシアに登場してもらいますが真ん中たりから ちょっと僕 力つきましたなんか 全部言葉でやってます同じ種類が複数あるあの三つから作るっていうのが さっきマグロあったんですけど同じものが 無理 いくらまれば種類が違いますよね クエリーが違う みたいなのも同じようなもんですこれ 咲くを切ったのを準備しとく っていうやつだったんですけどそもそも マグロからマグロ一匹なのか ジョブがないから咲くを作るのも時間がかかればですねだから ここの準備も本当はしたいよくよく考えると ここはそんなに時間使わへんけどこっちの方がめっちゃ時間使わへんみたいな両方やっておきたい あるいは こっちだけやっておくまあ そんな考え事をしなきゃいけないですよねまあ その同じようなことを このワサイもしゃりもあるしお店だと時間かかっても開いて ここかかっても 新鮮なものを提供したいからとか言っても そのお金とってでも おウェブサイトは それができないんであの 残念なんですけど あとはそうですね 弊社のプラトムだといろいろ複数のインスタント質が 立ち上がって横スケーリングするんですけどまあ それと 例えになるのかな例えば これが僕一人だったらいいんですけど複数になったら どうこれを判断すのかていうか 判断は そのもの どうやって判断するんですかねこれいつ新鮮じゃないかって色見て判断しますかなんか タイマー それぞれを動きますそれとも 競争期になりましたあとは 半分だけタイマー過ぎちゃった どうするとかあります あと これを捨てるとします もう全部切れたそうすると すぐ作り直しますか ストックやるまあ 多分忙しいときはしたいんですよでも あと10分で閉店なのにしたくないんじゃないですかっていうことも 考えなあかんとなってきましたねで さらに言うと お店の外まあ これで僕は サーバー中と外 ネットワーク上のことを言いたいんですけど今週 そうならい週ぐらいに マグロのおねが全部来てるからそれぐらい前に 来週 また避けといてっていうふうに お願いをできてまあ そうすると サクナ屋参加が準備してくれてるかもしれないですよねでも ああかんは 今日なかなかってもだから 今から入れてとか言ってもたぶん いや まあ 実際は頑張ってやってくれはるんでしょうけどまあ そんなお願いじゃないですか命令する 確かだと 命令はできないのでまあ そんな感じで ネットワーク上なるもんそう ちょっと 憂鬱が効きませんあと インファンの設備が違えばできることが ちょっと違うみたいに冷凍 冷凍庫 多分 いや 僕返しくないです多分 家庭でも そうだと思うんで ある そうなんと思うんですけどフレッシュな状態 どれだけキープできるかっていう冷凍庫の 冷凍庫の技術の違いがいろいろあると思うんでお店や サクナ屋さんによって持ってるものが違うかなっていうふうには思いますはい っていう感じで まあ 要は何を言いたいかというとちょっと 事先に準備しとくっていうことをやり始めるとその前の段階 その前の段階とか その次の段階とか挟んできてそれを全部きちんと連動しようならと まあ 何回よくわかんないことになってしまうだから まあ なんかあんた全部 ちゃんとジャンピストキー 絶対 なんか押し付けたくなっちゃいますよねまあ そんな話ですはいちょっと 水飲みますはい ここまでがキャッシュとあと それがなぜ こんな ちょっとややこしいものになっていくのかっていうのをあの今の なんかガシスできてたらいいなと思っているんですけどマンアービッド 最後 やっぱり これ どういうふうにワードプレスでやっていったいのかとかどういうふうに学んでいったいのかとか 結局 ないしたいのかっていう質問まあ 疑問が出てくると思うんですけどあの 最初に それを3番 これから話しますけど 最初に言ってきますけどえーとね 高校の部分を話すだけで 1時間でも 2時間でも時間が実は言います なんで 若干詰め込んでます で かつはしょってるっていうか まあ ちょっと部分だけ取ってますで かつ えっとなるべくわかり なんか ここ ややこしくなる複雑なみたいな 勘違いしやすいみたいなところはなるべく解説はしたいと思っているんですけど 方向性としてはちょっと全体像を描けていただけれなったらなと で それを持って帰ってもらって あとはちょっともう1回見直してもらうとか 自分で手をつけてもらうしかないと思っていますで あのまあ これは人それぞれ学び方が違うんでこれしかないとは言いけないんですけど 僕の学び方もあるんですけど やっぱりキャッシュって別にワードブレス 独自概念じゃないのでまずキャッシュとは何かの基礎から ちょっと理解を積み上げていくと 結局いそばが回れであのいいんじゃないかなと思っています で それをするには結局学んで 実際に実践してみるこれいきなりクラエントのサイトやるのはあれだと思うので 自社のサイトで試すとかなんか適当に作った学習のサイトで試すとかってことをやっていく必要があると思いますで まあそれを繰り返していくと ちょっとずつまあ理解度が深めれるのかなとで あのなんだろう極めてしまい エキスパートになる必要性はないとは思ってるので基礎の部分のやつが分かればちょっと視野が広がるかなぁ 理解度というふうに思ってますそれをやるにはこのワードブレスの場合ともかくプラグインを探し勝ちなんですけど それをそこから離れましょうそれをやり始めるとよくわかってないブラックボックスのものが 何かよくわかってないことをしますで 特に滝のものっていろんなものをやっててボケがわからないしあのなんかアヤフィアなことを歌っていることもあるので 丸投げにするのは個人的なお勧めしませんえーもちろん仕事でやってる場合 えっと全部理解して選択肢を並べて今回のこのケースだとこのプラグインでまかなえますねでいろいろトータルでみてコストがアダコーダーってやって 使うのはアリだと思いますそういう場合であればでもまあそれを理解して使うのとなんかよくわからんからお願いって丸投げするのとはまあ違うよなって話ですねはいでいろんなキャッシュがある中でそのコンテキストを知るために整理するポイントがまあ4つあるかなと思っていて1つ目はえーっとオリジンサーバーの外なのか内なのか外っていうのはネットワーク上ですねあのさっき言ってた寿司屋の中かそのサプライチェーンの元の部分かですねでやれることまあかかわる技術がちょっと違うのとえーっと勝手が違ってくるところがあります一言で言うとで2番目はキャッシングされるデータのリュートを大きいか小さいかえーっと後でも出てきますけどリュードを一番大きくなりがちなのがページですねページ全部ですねでちっちゃいのはもう変数1個とかそんなことですそういう話で捨ててあるよ3つ目はえーっとインフラ側がそのあえてるキャッシング機能なのかどうかあるのかないのかもある部分ですねそれはファードプレスのキャッシングを助けるものなのかそれともなんかインフラーサーバーさんとかやって独自のものなのかこっちかで最後プラグインのテーマはキャッシング機能と歌ってるのは具体的に一体何のキャッシングのことなのかですねあの実は校長国安なんだろう嘘ついてるとは言わないけど要はそれってそのことだよねみたいなとかあるのででえーっとこれもやあこし1ポイントなんですけどマーケティング目的でベースの名称が使われていることもありますあの要は読んだらそれと多分ページキャッシングのことだよねそういう感じなんだけどえーっとなんちゃらかんちゃらスーパーなんちゃらキャッシュみたいな書いてるでそのままご注意下さい気持ちはよくわかるんですけどご注意下さいって感じですねはいここから始めてみようで色々出てきた方で僕3つにまして理由があってこの順番になってますこれ見ることがあると思います永続か永続オブジェクトキャッシュですねはいえーっとまずはHTTPキャッシュ怖いなえーっとまずHTTPキャッシュはさっき出てきたZooのコニーズがありますけどあのネットワーク部分の話ですでHTTPWideWideウェブの通信技術なんですけどそこは使用の一つですなのでワードプレスはことではないですえーっとキャッシュどこにおかえるかっていうとネットワーク上におかれますなのでつまり皆さんの使いのブラウザーとかCGNとかあと会社とか場所によってはプロキシーサーバーが置いてたりとかそういうのもあるのでさっきもちょっと話したんですけど外側にあることでまあ要さとしたはだいたいHTTPキャッシュでなんですよしようがなので覚えることはそんなに覚えることはないんじゃないなあの色んなものが変わっていてわけがわからないってことはないんですけどこのインバリデーションと再生性のオリジンが明確に指示できないんですそこはちょっと難しいところですよくあのあれ更新したのにキャッシュが残ってるのはそれですねはいそんなことができるとですね皆さんのパソコンにハックスやりとできないわけでそれが理由ですはいサーバーからのレスポンスで得られたリソースがキャッシュされますワードプレイスサイトの場合は性的なものと動的なものが2つありますさっきも出てきたフレッシュとステイルこの2つの状態があってこれは何秒経ったかんですかそれを判断基準として古くなったかどうかの判定が行われます基本的にはヨシナにやってくれます実はネットワーク上でなので何もしなくても何かやってますブラウザーとか皆さんご存じだと思うんですかブラウザーキャッシュそこにHTBレスポンセッターのキャッシュコントロールフィールで指示できるキャッシュコントロールっていうのだけ聞いたことがあるというのがあると思いますマックスエージー300っていうのはよく300秒したらなくなるんですっていうふうに書かれているのがあると思うんですけど正確にはデバイスブラウザーとか自然とかに300秒たったらステイルに古くなったものだと認識してくださいということのお願いを出しているものなんですよねそれをどうするかはそのデバイス次第です大抵削除しますっていうことですねそれがマックスエージですSマックスエージっていうのはこれ別に間にあるCDNとかだけに指示できるもんですねちょっとパブリックとかキャッシュとかっていうのはさらにややこしとなってくるのを今説明したいんですけど同的なところでわたしてたりしますちょっと待ってください指示さっきここで僕指示できないってじゃないですか指示できるって書いてるじゃないですかこれを指示できるなんですけど正確には伝えることができるっていう感じですCDNとかブラウザー側でこれをオーバーライトしてたりすることもあるのでそういう意味でもありますし明確にワードプレイスのサイト側から各ブラザに新しい投稿を追加したからフォントページのキャッシュを皆さんはっきりしてくださいってことを伝えられないんですそういうことですねじゃあこれどこで設定するのかって話したんですけど正的ファイルはサーバー側でやるもんですアパチとNXですねホスティングサービスの中にはサービスの管理画面ができる場合がありますこれその場合はそれ活用するのがいいと思いますない場合はアパチが多いのかなHTアクセスに記述することができますプラグインがたまに正的ファイルキャシーマンスって書いてる歌ってるプラグインがあったりするんですけどさっき言ったみたいにそういったプラグインがそんなものを作れることわけがないんですよ何してるかっていうとこのHTアクセスの記述を自動的にやってくれるってことをやってたりしますそれがやってることですねなのである意味自分で書けるんですそのレサを分かれば同的コンテンツはワードプレスの場合投稿固定ページあとロボットステキストこの辺もでその辺のところですPSPなのでPSP側でつけることができますシャスタンキャッシュコントロールヘッダーにただそこをやれ始めると次の項目のページキャッシュの話になっていくのでちょっと同的コンテンツはここまでしますでHTBキャッシュだけに関しては日本語でリソースがあるのでリンク貼ってあります一番上のHTBキャッシュ日本の日本のところから話を読むといいと思います後でシェアするのでその時で取れると思いますはいページキャッシュこのマックに水ぶっかけそうで怖いですねえーとそっか床に置けばいいね倒すページキャッシュはアプリケーションとかによってなんか微妙に違うみたいな一応ワードプレスサイトの場合っていうふうに書きましたさっき言ったようにワードプレスサイトって最終的に出てくるHTMLの形式の適当ですよねあれを毎回動的に作ってます毎回動的に作ってますそれが特徴の一つですワードプレスなので毎回作ってるんでその最終的に出てきた出力のHTMLをキャッシュしてみましょうそれがページキャッシュのページキャッシュですそういう話ですねワードプレスができるというかワードプレスサイトでできるキャッシュの中で一番リードがでかいですすべてのページなのでなので効果が一番大きいです特にすべてのリクエストにもかかわるので大きいですパフォーマンスとスケーリングの両面でプラス効果が非常に大きくてちょっとね最近僕やってみるとそんなに劇的じゃなかったんですけど昔僕がテストした中ではローカル環境でも例えば300ミリ秒400ミリ秒400-500ミリ秒かかってたDTFBがページキャッシュでたら100ミリ秒以下になるとかかなり効果大きいですただその分誤った理由で起きる事故の強度も大きいですワードプレイサイトの場合はページキャッシュでも複数の種類複数のやり方がありますでもそれもややこしい事因ですまずはCDNのみでキャッシュするやり方があってさっきの動的リソースにHTTPレスポンスセンターつけるって事でやってくるんですけどそういうやり方がありますオリジンサーバーでキャッシュするやり方がありますこれも2つぐらいやって多めにインフラ側の機能でインフラでやってる事なのでその上の方でアプリのワードプレイサーは分かんないんですよね例えばキャッシュをパージするとかそういうボタンつけるためにインフラ部分とアプリ部分をお話しさせる必要があるのでそのために専用のプラグインをサーバー会社が作って出していたりしますそういう部分のプラグインは使うそれがプラス専用のプラグインですねでも今日の時はインフラ側がやってますそれによる独自実装というのもあります公式リポーションとか探しとでよく出てくるやつはこれですこの辺組み合わせやり方があっていろいろあるんですけどインフラ側の機能プラグインによる独自実装この違いを持ち帰ってほしいのでそれを説明しますまずウェブサーバーですねウェブサーバーですねで青のインフラ側のページがキャッシュ機能がある場合なんですけどウェブサーバーの大体前にあるものだと思ってくださいでリクエストをきますでここでページキャッシュあるかないかの確認してキャッシュあるでそちらもここで返してしまいますところがプラグイン実装されているとプラグインが動かないとその判断もできませんここを通ってPHPを動きますワードプレースがロードされますデータベースをクエリしますやってここでキャッシュあるであいつって戻しますなのでスキップできてるさっきの最初の話でスキップする場所を思いがうってもらうとスキップできてるのがプラグインはこの重いのかここの負荷が重いのか両方重いのかわかりませんなのでサイトによって影響全然違ってきますけどここで返すとPHPもデータベースもワードプレースがいっさ動きません動くのが動き必要ないんでサーバーがやってくるサーバーとかエンジンクスファースCGIとかリュアスファークシーとかと一致してるとこれが返しますなのでそこのかなりの差があります危険なところキャッシュしてNGなページがありますログイン画面管理画面ログインしてる状態プレビューとかもそうですけどなんとなく理由は皆さん分かると思うんですけどログイン管理画面がキャッシュなんかされてみんな見えちゃったら事故ですよねそれはそれがありますページショッピングサイトとかカインサイトが典型的なやつなんですけどそうなるとページキャッシュできないあるいは下上で一部分だけちょっとやり方があるんですけどやるとか色々組み合わせあります僕よりも同様の方が最近やったので色々し工作をしてくほしいんですけどそう言われます裏側に入ってるっていうのはワードプレスのパターンに沿って設定されてることが多いので使ってはいけないプラグインとかカスタマイズがありますありがちなのはここにいたらありますけどよく日本のプラグインでログイン画面を強制的に変えるやつあるじゃないですかあれダメですね使っちゃう弊社のプラトフォンに入れたりするのと説明して外しましたつき詰めれば足していけばいいんですけどそのパターンをそれを追加していく事故を起きる可能性が高いのではなかったりしますできればインフラ側のページキャッシュ機能を使うのがベターですパフォーマンス的でもいいですしあとはワードプレスのちゃんとした作り方をしていればなるべく辞こらないように結構決まりが入っているある程度わからなかったサポートしてくるってもありますとなると大抵ワードプレス専用に作られたマネージドのワードプレスホスティングサービスっていうことになっちゃいます今日のスポンサーさんの中にも一社か二社かあるんですけど独自イストンプラグインとは言ってもやっぱり理由があって独自イストンのやっているようなプラグインさっき例で出したWPスーパーキャッシュっていうのはかなり昔からあるシーン性なんですけどそういうのに対わざる得ないときはありますその場合はなるべくページのキャッシングのみ行えるとか切り分けできるようになっているのがいいと思いますスーパーキャッシュはいろんな種類のキャッシュがあるそれをプラグインであれもこれもそれもやりますって歌ってるやつがあるとそれのここだけオフにしたいんだとかそのここだけバグが出ててとかそれができないと全部オンか全部オフのどっちかになってしまいますでそれでも問題ない人だったらそもそもいらないかもしれないって話になってくるんですけどなので分けてるほうがいいですでも上の選択肢が取れなかったら無いよりはマシっていうサイトはあるとは思うのでそれはもう試す確認するしかないですねこれが最後かなページキャッシュそうですね最後WPオージェクトキャッシュと5.8かな8だったかな9だったかな9かされてるかどうかのチェックが入るようになってそれで日本語で検索する大混乱のやつがいっぱいできますよねWPオージェクトキャッシュはそもそも何かというとワードブレースが行う一連の処理の中でコストが高い処理をキャッシュするための仕組みですコストが高い処理っていうのはワードブレースの場合だいたいデータベースへのクエリです時間がかってるのがコアに実装されていますこれはコアが利用しています一応補足すると同じようなことは同じようなアイデアは他のCMSでもありPHPのフレームワークでもあり色々ありますただ何次はキャッシュって書いてあげてオブジェクトキャッシュというイメージをワードブレースがあんまり見ないんですよね僕も理由はよく分からないんですか経緯はともかくオブジェクトキャッシュって言いますキャッシュはどこに保存されるかというとメモリですサーバーのメモリですパスコのメモリと同じですメモリですオブジェクトキャッシュというのは実はリクエストに対して処理が終了されば吐きされますずっと保持されないんです実は吐きされますなので永続かという話が出てきます吐きされないでリクエストまたいで保持しようこれも初め何残っちゃなんと思うんでこれずつあります僕ではないやつこれで普通ですね処理しますデータベースが取ってきますメモリに入れますメモリに入れてページ生成するとかテーマとか使いますリクエストが終わりました一緒にできて出しますそしたら削除しろそういう性質かな削除されます例えば僕のサイトを持ってて全く同じポイントをまずAさんが見に来たらこうあって重いクエリか入ってバーってきますBさんが来て1分後に同じことをやったら無いんですだから同じことやりますそれをA作化するとここで削除されませんなのでこれが保持されるので次Bさんが来た時はここに来て仕組みがキャッシング処理があるかないか確認しますキャッシュあるでデータベースへのクエリが発生しなくて済みますそういうことはスキップするのはここなんですよねここを返しますっていうのが映像化してるかしてないかもしれませんこれ違いです僕もこの映像化っていう直訳かなんかムズムズするんですけど英語のパセステントちょっとないんですよねワードプレス6.1個結構これニュース読んでらっしゃる方目にしたことがあると思うんですけどパフォーマンス改善パフォーマンス改善っていうのが6.1位が入ってます結構その多くはオフジェットキャッシュガラミです特に大きいのが6.1にこのチケットがたぶん10年ぐらいなのかな10年長いなのか僕よりもよく知ってる人がそこに2人がいるんですけどかなチケットがあって確かWBクエリはそのほんの一部しかオフジェットキャッシュ利用しなかったんですけどそれを全面的に利用するように入りましたなので映像化がなかってもサイトによっては効果はありますし映像化されてるとサイトはもっと効果があります特にこの大ビークエリっていうやつを使ってサブルーサブクエリループとかそのやり方で作ってればその効果ですね結構絶在にあるはずです一応コアのもんなんですけどキャッシュAPIを利用することで会社それを使うことができますオブジェクト大ビーオブジェクトキャッシュっていうクラスがあってこれよりもこの次でいくんですけど関数が用意されているのでそれを使ってプラグインテーマの中で使うことはできます比較的難しくないAPIなんですけどさっき言いましたインバイデーションと生鮮設計これは自分で責任を持ってやる必要があります一般向けの配布しているプラグインでもいいんですけど僕がアンタロス化に入った頃にカナリ画面のカスタムドーコタイプかなんかの出てくるんですけどとあるプラグインがやっている機能で全然変わんなくてちゃんと動いててデータベースされてる全然変わんなくてその頃僕よく分かってなくて1日ぐらいそれで分からんなって言ったらうちのCTOとインフライズに来たものの10分ぐらいで返答が返ってきて要はインバイデーションにオブジェクトキャッシュに入れてるんだけどインバイデーションが実装されてないんですよ全くないんですなので500円のレンダルサーバーとかで使ってると見てその問題が表面化しないけど映像化されているプラットフォーム使うとその問題が表面化するじゃあプラットフォームの問題かって違うんですねプラグイン側の問題なんですよでもそこの切り分けができないとなんでこのおかしいなこのサーバーはとかいう感じになっちゃうしそれをサポート側もできないしという感じになってきますなので理解力が一気に一緒になってくるやつです1、2、3その中で一番難しいやつです細かいこと書いてあるんですけどポイントとしてはここに青線を二つさっき言ったキャッシュガラミのものですキャッシュゲットでゲットしてキャッシュがなかったらあないねってこの処理があって最後にキャッシュセットする一応これ二つだけです最後この処理を一旦するんですけどさっき言ったみたいに映像がなければ必ずここはフォルスになるんですねキープされないんでだから必ず起きるんですけどこれが映像だったら一回入ってしまえば必ずtrueなのでその後変わらないんですなので例えばサイトとか場合においてこういうことであります例えばこのキャッシュ内部同じ処理で動きをしておきつつ例えばこれが投稿を新しく更新すると必ずこれはインバリデートして作り直したいときは投稿が最後にあるダルピーインサートポストとかのフックを使ってこれをさせるようにするとか思いますこれが例えば5秒かかりますとか言ったら投稿をパブリシュートするとその後5秒また何か来なくなって最悪の場合こうでタイマーと起きるんで管理画面となると他のことまた考えなきゃいけなくなってきましたよね裏側でやるかとかそういう感じのことを自分でやっていかなきゃいけないです使えると効果大きいですごめんなさいオーバーしてるんですけど本だよ123ページで終わります映像化するにはインフラが対応している場合がありますそれしかないですAPCウメムキャッシュレディスとかあるんですけどだいたい今多いのはレディスですそういう感じなんですけどワードプレスマネジンオフシングサービスになっちゃうかな大抵はインフラ側とAPI側がちゃんとお話ししてこれを使えるようにドップインっていうタイプのプラグがあってちゃんとレディスならばレディスにあったやつメムキャッシュDなやつってあるんでそれを入れる必要がありますという感じで一気にここで理解力が必要度が上がってきてしまうので本当にこれが必要なのかそこまでやらなきゃできないサイトなのかっていうのはまた考えていく必要があります無条件に言えばOKって時だったらいいんですけどさっき言ったみたいにプラグインが全然それを考慮してないコードを書いている時もあるので起きたら自分でやる必要がありますまとめです要はキャッシュをリスキップしてくれますなので両方助けてくれますパフォーマンスとスケーリングでも解決じゃないってことは頭に置いておいてくださいトレードオフはインバリデーションですねインバリデーション先生もうここ考える必要がありますさっき言ったボートで言ったキャッシュが効き過ぎキャッシュが強縮は大抵これですこれの問題ですそれは使用としての場合もありますしこれがちゃんと設計されていない場合がある基本合です適切な利用と設計がサイトに違うんでボタンを覚えつつ作業する必要があります僕のオススメ的にはまずATVキャッシュから入っていてベースキャッシュでオブジェックキャッシュっていくのがいいかなとできればインフラガーにこの機能があればそれを最大限使う方が安全かつ最大限に効果があるので個人的にはいいと思います最後ミッキーとおると申しますこういう会社で働いてますやってますありがとうございましたすみません7分オーバーありがとうございました今ちょっと50分くらいでしたけど500のペットボトルがなくなるくらい熱のあるセッションをしていただきましたこのスライドは共有されるんですよねWC関西のハッシュタグで検索していただければ入んなかった参考モノモノへのリンクもあるのでなるほどちょっと足してアップデートされたものが共有されるということですのでぜひそちらご覧いただければと思いますこれで皆さんすっかりフレッシュなお寿司の作り方に詳しくなったということでありがとうございましたありがとうございますこの後もいるんでこの後もいるんで質問があればこの後質問していただこう寿司屋で働いたけどその例えは無理だっていう突っ込みがあれば教えてくださいこの瞬間もいらっしゃると思うのでぜひお話してみてくださいありがとうございました