Open tishin-endou opened 2 months ago
OSFの上部のメニューにある「マイプロジェクト」を開いたときに500ユーザがプロジェクトに所属しているとembed属性を取得するSQLが都度発行されるので リクエスト内で一度取得した情報はキャッシュして再利用することで、レスポンスの高速化を図る 子要素毎に新しいビューを作成するリレーショナルフィールドでシリアル化プロセス全体で再起的な入れ子が発生するので改善する
キャッシュの導入: プロジェクトのコントリビュータデータの取得結果をキャッシュする 同じデータの再取得を避けることで、API呼び出しの数を削減
ページネーションの改善: OptimizedPagination クラスを追加しページオブジェクトやページ数を確認後に、オブジェクトリストを非同期的に取得する ページネーションの計算でクエリの処理を明確にしてデータを効率的に取得する
施策前のnodeの実行時間は7秒前後
施策後のnodeの実行時間は1秒ほど
コメントありがとうございます! 再考いたしました。ユーザ体験が向上しそうな効果を計測し添付いたしました。
Purpose
OSFの上部のメニューにある「マイプロジェクト」を開いたときに500ユーザがプロジェクトに所属しているとembed属性を取得するSQLが都度発行されるので リクエスト内で一度取得した情報はキャッシュして再利用することで、レスポンスの高速化を図る 子要素毎に新しいビューを作成するリレーショナルフィールドでシリアル化プロセス全体で再起的な入れ子が発生するので改善する
Changes
キャッシュの導入: プロジェクトのコントリビュータデータの取得結果をキャッシュする 同じデータの再取得を避けることで、API呼び出しの数を削減
ページネーションの改善: OptimizedPagination クラスを追加しページオブジェクトやページ数を確認後に、オブジェクトリストを非同期的に取得する ページネーションの計算でクエリの処理を明確にしてデータを効率的に取得する
QA Notes
Documentation
施策前のnodeの実行時間は7秒前後
施策後のnodeの実行時間は1秒ほど
Side Effects
Ticket