ページが真っ白になる問題(中断)
この問題ですが、その後再発した折にページに対応するキャッシュファイルを手元で復元してprint_rで確認してみました。
すると、sfWebResponseのheaderOnlyが「1」になっていました。
headerOnlyが1になっていると、このキャッシュからページデータ(sfWebResponse)を復元して表示する際に、コンテンツ本体の送信処理がスキップされます。
なので、「ページが真っ白」という状態になっていました。
※ちなみにステータスコードは200になっています。
真っ白になる原因はこれで分かったのですが、しかし、なぜこのキャッシュでheaderOnlyが1(true)になっているのかは、いろいろ可能性を調べて見たのですが分かりませんでした。
ページのデータがキャッシュに保存される前でheaderOnlyを設定しているのは、sfExecuteFilterのhandleView()メソッドくらいしかありません。
http://trac.symfony-project.org/browser/branches/1.2/lib/filter/sfExecutionFilter.class.php#L105
<?php 105 switch ($viewName) 106 { 107 case sfView::HEADER_ONLY: 108 $this->context->getResponse()->setHeaderOnly(true); 109 return; 110 case sfView::NONE: 111 return; 112 }
この$viewNameはactionからの戻り値が格納されているのですが、actionからHEADER_ONLYをreturnしているような箇所はありません・・・。
というわけで、完全に原因を究明できていませんが、ものすごく迷宮に入ってしまったので調査はこれくらいにして、場当たり的な対処でこの問題に対処しておきたいと思います・・・。
似たような問題に遭遇した方、解決されている方がいらっしゃったら、是非コメントお願いします。