この共通処理は、リクエストのどのタイミングで動きますか。
page や route の処理が始まる前です。対象を絞る設定を書かなければ、基本的にすべてのリクエストが通ります。重い処理を置くと全ページのレスポンスが遅くなります。
面接官が見ているのは実行順序の理解。
これは「全ルートに共通で認証チェックを入れたい。どこに書きますか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- ルートの処理より前。対象を絞らなければ全リクエストが通る
だから重い処理を置くと全ページが遅くなります。 - ルートの処理が終わった後、レスポンスを返す直前
前です。だから転送や書き換えができます。 - 静的なページにはかからず、動的なページにだけかかる
レンダリング方式では分かれません。設定で対象を絞らない限り通ります。 - ルートより前なので、ここに重い処理を置くと全体が遅くなる
影響範囲まで意識できています。置くのは軽い判定だけにします。
面接官は何を見ているか
- ルートの処理より前だと答えた
- すべてのリクエストが通り得ると理解している
- 重い処理を置くと全体に効くと気づいた
模範解答
ルート(page や route)の処理が始まる前に実行されます。対象を絞る設定を書かなければ、基本的にすべてのリクエストが通ります。
ここから導かれる注意点が2つあります。1つは、重い処理を置くと全ページのレスポンスが遅くなること。DBへの問い合わせを毎回入れると、全体に効きます。もう1つは、ここでの不具合が全ページに波及することです。
だから、置くのは軽い判定だけにします。Cookie の有無を見る程度に留めて、本格的な検証は各ルート側でやる、という分担が扱いやすいです。