私は Symfony2 を初めて使用し、特にキャッシングに関して、すべてのページ要求で使用されるナビゲーション バー HTML を生成する最良の方法を考えていました。
したがって、すべてのページ リクエストが、ログインしているユーザーと、未読メッセージの数を示す数字を表示する場合を想像してみてください (実際には、そのための stackoverflow のように)。情報が最新であることを確認するために、すべてのコントローラーで生成できると思います(もちろん、関数または何かを使用して)-しかし、コントローラーの出力全体をキャッシュすることも検討しており、それが良いと思いますこの動的部分を分離しておくために。
この種のものすべてに対してコントローラー拡張機能を作成することは良い方法でしょうか? このように、コントローラーはその特定の機能 (DB からのブログ投稿の取得など) のみを処理し、コントローラー拡張機能はすべての動的コンテンツを追加します。そうすれば、コントローラーの結果をキャッシュして、ページ全体をキャッシュせずにページを高速化できます (これは、多くの動的な HTML コンテンツのために実際には実行できません)。
このようなものかもしれません:
class ControllerExtension extends Controller
{
public function render($view, array $parameters = array(), Response $response = null)
{
//get number of messages for this user
$parameters['messages'] =
//are they logged in
$parameters['logged_in'] =
// render as normal
return parent::render($view, $parameters, $response);
}
}
このため、JS の使用を無視したいと思います。これらのいくつかに JS を設定できることはわかっていますが、これは避けたいと思います。