Enviar búsqueda
Cargar
Ruby on Rails のキャッシュ機構について
•
0 recomendaciones
•
1,189 vistas
Tomoya Kawanishi
Seguir
大手町.rb #19 発表資料
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 14
Descargar ahora
Descargar para leer sin conexión
Recomendados
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
目grep入門 +解説
目grep入門 +解説
murachue
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Koichiro Matsuoka
Recomendados
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
目grep入門 +解説
目grep入門 +解説
murachue
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Koichiro Matsuoka
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
Takayuki Shimizukawa
Rails あるある
Rails あるある
Ryunosuke SATO
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
CircleCI vs. CodePipeline
CircleCI vs. CodePipeline
HonMarkHunt
PayPayでのk8s活用事例
PayPayでのk8s活用事例
PayPay Corporation
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
小さなサービスも契約する時代
小さなサービスも契約する時代
Ryo Mitoma
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Takayuki Shimizukawa
Vimから見たemacs
Vimから見たemacs
Shougo
ノンデザイナーのための配色理論
ノンデザイナーのための配色理論
tsukasa obara
Nmapの真実
Nmapの真実
abend_cve_9999_0001
AWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
Ruby初心者からよく質問されること
Ruby初心者からよく質問されること
Tomoya Kawanishi
Ruby on Rails プロジェクトでの他言語エコシステムとの共存方法
Ruby on Rails プロジェクトでの他言語エコシステムとの共存方法
Tomoya Kawanishi
Más contenido relacionado
La actualidad más candente
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
Takayuki Shimizukawa
Rails あるある
Rails あるある
Ryunosuke SATO
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
CircleCI vs. CodePipeline
CircleCI vs. CodePipeline
HonMarkHunt
PayPayでのk8s活用事例
PayPayでのk8s活用事例
PayPay Corporation
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
小さなサービスも契約する時代
小さなサービスも契約する時代
Ryo Mitoma
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Takayuki Shimizukawa
Vimから見たemacs
Vimから見たemacs
Shougo
ノンデザイナーのための配色理論
ノンデザイナーのための配色理論
tsukasa obara
Nmapの真実
Nmapの真実
abend_cve_9999_0001
AWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
La actualidad más candente
(20)
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
Rails あるある
Rails あるある
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
CircleCI vs. CodePipeline
CircleCI vs. CodePipeline
PayPayでのk8s活用事例
PayPayでのk8s活用事例
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
PostgreSQLアンチパターン
PostgreSQLアンチパターン
小さなサービスも契約する時代
小さなサービスも契約する時代
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Vimから見たemacs
Vimから見たemacs
ノンデザイナーのための配色理論
ノンデザイナーのための配色理論
Nmapの真実
Nmapの真実
AWSではじめるMLOps
AWSではじめるMLOps
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
Similar a Ruby on Rails のキャッシュ機構について
Ruby初心者からよく質問されること
Ruby初心者からよく質問されること
Tomoya Kawanishi
Ruby on Rails プロジェクトでの他言語エコシステムとの共存方法
Ruby on Rails プロジェクトでの他言語エコシステムとの共存方法
Tomoya Kawanishi
Thread の利用事例紹介
Thread の利用事例紹介
Tomoya Kawanishi
マークアップで使えるRuby
マークアップで使えるRuby
Tomoya Kawanishi
ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例
Tomoya Kawanishi
Ruby のワンライナーについて
Ruby のワンライナーについて
Tomoya Kawanishi
エンジニア転職のノウハウ
エンジニア転職のノウハウ
Tomoya Kawanishi
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについて
Tomoya Kawanishi
Ruby の String のメソッドについて
Ruby の String のメソッドについて
Tomoya Kawanishi
RubyGems と Bundler について
RubyGems と Bundler について
Tomoya Kawanishi
Ruby の正規表現について
Ruby の正規表現について
Tomoya Kawanishi
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行について
Tomoya Kawanishi
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
Yasuko Ohba
Long Life RailsApp in the case of REJOB
Long Life RailsApp in the case of REJOB
Daisuke Yamasaki
Ruby/PureImage: 第2回岡山Ruby会議LT
Ruby/PureImage: 第2回岡山Ruby会議LT
NISHIMOTO Keisuke
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
kotaro_hirayama
RubyKaja 2013
RubyKaja 2013
Takeshi Yabe
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
RubyGems と Bundler について
RubyGems と Bundler について
Tomoya Kawanishi
Similar a Ruby on Rails のキャッシュ機構について
(19)
Ruby初心者からよく質問されること
Ruby初心者からよく質問されること
Ruby on Rails プロジェクトでの他言語エコシステムとの共存方法
Ruby on Rails プロジェクトでの他言語エコシステムとの共存方法
Thread の利用事例紹介
Thread の利用事例紹介
マークアップで使えるRuby
マークアップで使えるRuby
ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例
Ruby のワンライナーについて
Ruby のワンライナーについて
エンジニア転職のノウハウ
エンジニア転職のノウハウ
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについて
Ruby の String のメソッドについて
Ruby の String のメソッドについて
RubyGems と Bundler について
RubyGems と Bundler について
Ruby の正規表現について
Ruby の正規表現について
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行について
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
Long Life RailsApp in the case of REJOB
Long Life RailsApp in the case of REJOB
Ruby/PureImage: 第2回岡山Ruby会議LT
Ruby/PureImage: 第2回岡山Ruby会議LT
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
RubyKaja 2013
RubyKaja 2013
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
RubyGems と Bundler について
RubyGems と Bundler について
Más de Tomoya Kawanishi
英単語の覚え方
英単語の覚え方
Tomoya Kawanishi
Ruby の文字列について
Ruby の文字列について
Tomoya Kawanishi
AWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったこと
Tomoya Kawanishi
PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選
Tomoya Kawanishi
HTTPと Webクローリングについて
HTTPと Webクローリングについて
Tomoya Kawanishi
Rake
Rake
Tomoya Kawanishi
Active record query interface
Active record query interface
Tomoya Kawanishi
Active Support のコア拡張機能について
Active Support のコア拡張機能について
Tomoya Kawanishi
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Tomoya Kawanishi
RubyのDir、File、IO について
RubyのDir、File、IO について
Tomoya Kawanishi
エネチェンジでの Side ci 利用事例について
エネチェンジでの Side ci 利用事例について
Tomoya Kawanishi
AWSコストの事業部別コスト配分について
AWSコストの事業部別コスト配分について
Tomoya Kawanishi
Pry による repl 駆動開発について
Pry による repl 駆動開発について
Tomoya Kawanishi
Module での名前解決について
Module での名前解決について
Tomoya Kawanishi
Tsort について
Tsort について
Tomoya Kawanishi
ガス単独診断に学ぶ Vue js
ガス単独診断に学ぶ Vue js
Tomoya Kawanishi
Fiberの使いどころ
Fiberの使いどころ
Tomoya Kawanishi
Más de Tomoya Kawanishi
(17)
英単語の覚え方
英単語の覚え方
Ruby の文字列について
Ruby の文字列について
AWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったこと
PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選
HTTPと Webクローリングについて
HTTPと Webクローリングについて
Rake
Rake
Active record query interface
Active record query interface
Active Support のコア拡張機能について
Active Support のコア拡張機能について
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
RubyのDir、File、IO について
RubyのDir、File、IO について
エネチェンジでの Side ci 利用事例について
エネチェンジでの Side ci 利用事例について
AWSコストの事業部別コスト配分について
AWSコストの事業部別コスト配分について
Pry による repl 駆動開発について
Pry による repl 駆動開発について
Module での名前解決について
Module での名前解決について
Tsort について
Tsort について
ガス単独診断に学ぶ Vue js
ガス単独診断に学ぶ Vue js
Fiberの使いどころ
Fiberの使いどころ
Último
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Último
(9)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Ruby on Rails のキャッシュ機構について
1.
Ruby on Rails
の キャッシュ機構について 2019/07/17 大手町.rb #19
2.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 1自己紹介 Tomoya Kawanishi a.k.a. @cuzic エネチェンジ株式会社 チーフエンジニア 電力会社、ガス会社を切り替えるなら、エネチェンジ経由で! 一般家庭も!法人も! エンジニア積極採用中です Ruby関西の中の人 2019年9月15日(日) 大阪RubyKaigi 02 発表者として登壇くださる方、あとで声かけください。 大手町.rb の中の人 毎月 大手町.rb の開催を予定 第2水曜か、第3水曜あたりで定期開催 東京駅、各線大手町駅から直結! Ruby の初級者がメインターゲット
3.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 今日のテーマ Ruby on Rails のキャッシュ機構について キャッシュはなぜ重要か 遅い処理はどうしてもたくさんある 入力が同じなら、出力も同じことが多い 単に、前回の値を覚えてそれを返せばいい!(=キャッシュ) 今日、話すこと キャッシュの種類 Ruby on Rails が用意しているキャッシュストア ENECHANGEでのキャッシュの利用について 2
4.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 キャッシュの種類 ページキャッシュ ページ全体をキャッシュする 静的コンテンツのキャッシュ ブラウザ・CDN・WEBサーバでキャッシュ 非常に高速に応答できる フラグメントキャッシュ view 部品のレンダリング結果をキャッシュ 低レベルキャッシュ 任意のクエリ結果、計算結果をキャッシュ SQLキャッシュ 同一リクエスト内で、同一クエリを実行した 場合、キャッシュを返す 3 ブラウザ CDN WEBサーバ (NGINX) APサーバ (puma等) DBサーバ
5.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 ページキャッシュの利用 Ruby on Rails では静的コンテンツは下記を両立できる リリース後すぐに反映される キャッシュがすでにあればキャッシュを使う Ruby on Rails のキャッシュの仕組み アセットパイプラインで digest値つきのファイル名を生成 内容が変化すると digest(ファイル名)が変化する Ruby on Rails で作られるコンテンツもページキャッシュ を意識した設計にできる 4 # ページキャッシュが使うための設定 ttl = 1.hour expires_in ttl, public: true, must_revalidate: true request.session_options[:skip] = true # set-cookie を飛ばさない @article = Article.last fresh_when @article # fresh_when で ETAG をいいかんじに設定できる must_revalidate: true 前回と同じコンテンツかの問い合わせ を必須にする
6.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 (参考) ETAG とキャッシュの動作 ブラウザは ETAG と 組合せてページを キャッシュする リクエスト時に前回記憶し た ETAG も合わせて送信 サーバは前回と同じ値なら 304 not modified を応答 ページ全体を返すよりも ずっとコンパクトで ネットワーク負荷が少ない ブラウザだけでなく、 CDN やプロキシも同じよ うに動作する 5 ブラウザ WEBサーバ ① / をリクエスト ② 200 OK をレスポンス ETAG deadbeaf をブラウザはキャッシュ ③ / をリクエスト 前回の ETAG は deadbeaf ④ 304 not modified をレスポンス ブラウザは前回のキャッシュを使う ⑤ / のコンテンツを更新 ETAG が beafbeaf になる ⑦ / をリクエスト 前回の ETAG は deadbeaf ⑧ 200 OK をレスポンス ETAG beafbeaf をブラウザはキャッシュ
7.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 フラグメントキャッシュの利用 6 <% @products.each do |product| %> <% cache product do %> <%= render product %> <% end %> <% end %> <%# ハッシュ値: views/products/1-201505056193031061005000/bea67108094918eeba42cd4a6e786901 %> フラグメントキャッシュ 各部品ごとに個別に適切に期限切れを設定できる 下記の例では、 product の cache_key とテンプレート ツリーダイジェストを元にキャッシュされる cache_key : id と updated_at を元に生成したキー テンプレートツリーダイジェスト: キャッシュされるビューフラ グメントの内容から生成したハッシュ値 Ruby on Rails ではキーベースの有効期限を採用している
8.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 低レベルキャッシュ 低レベルキャッシュを使うと任意の処理結果をキャッシ ュできる Rails.cache.fetch 第1引数: キャッシュキー expires_in: 有効期限 ブロック付きで呼び出す キャッシュがなければ、ブロックの評価結果をキャッシュ 有効なキャッシュがあれば、キャッシュを返す モデルで cache_key メソッドと組合わせて利用する 7 class Product < ApplicationRecord def competing_price Rails.cache.fetch("#{cache_key}/competing_price", expires_in: 12.hours) do Competitor::API.find_price(id) end end end
9.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 SQL キャッシュ 同一リクエスト内で同一のクエリを実行したとき、同一 の結果を返す 特別な設定なく、自動的に利用される 8 CACHE (0.0ms) SELECT "areas".* FROM "areas" WHERE "areas"."id" = 1
10.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 キャッシュストア 単一サーバなら FileStore、 複数サーバなら RedisCacheStoreがオススメ ActiveSupport::Cache::MemoryStore 各Rubyプロセス内に持つキャッシュストア プロセス間でキャッシュを共有できる ActiveSupport::Cache::FileStore ディスクシステム上のファイルにキャッシュする プロセス間でキャッシュ共有できる ActiveSupport::Cache::MemCacheStore memcached を使うキャッシュ ActiveSupport::Cache::RedisCacheStore Redis を使うキャッシュ 9
11.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 (おまけ) RequestStore https://github.com/steveklabnik/request_store 同一リクエスト内が存続期間 キャッシュストアというか 同一リクエスト内でだけ使えるグローバル変数 Model と Controller とかでデータ共有したいときとかに便利 もちろん、キャッシュストアとしても使える 容量・用法は適切に 10
12.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 ENECHANGE でのキャッシュ ページキャッシュを積極的に活用 静的アセットはアセットパイプラインを使って生成 Nginx で、digest があれば永遠にキャッシュされるように設定 一部の静的なページはページキャッシュを利用 低レベルキャッシュ(Rails.cache.fetch)を Model で利用 キャンペーン情報等は日単位で切り替わることが多い ENECHANGE ではキャッシュキーに年月日を含めている 日付が変わると、自動的に取得しなおす キャッシュが切り替わる条件はすべてキャッシュキーに含めるのが ベストプラクティス RedisCacheStore と RequestStore を組み合わせて利用 Redis サーバはネットワーク的に別のサーバにあり、ちょっと遠い 一部のキャッシュしている値がとても大きい(数MBある) Redis への取得結果を RequestStore にキャッシュ 同一リクエスト内で同じ値を Redisサーバまで取りに行かせない 11
13.
大手町.rb #19 「Ruby
on Rails の持つキャッシュ機構について」 まとめ いろんなタイミングでキャッシュできる ページキャッシュ、低レベルキャッシュ キャッシュ機構もいろいろある ファイルキャッシュ、MemCached、Redis ・・・ ENECHANGE では低レベルキャッシュを多用 DB からの取得結果をキャッシュ キャッシュヒット率を高める RequestStore も一部利用している 12
14.
ご清聴ありがとう ございました
Descargar ahora