ページが真っ白になる問題(中断)

この問題ですが、その後再発した折にページに対応するキャッシュファイルを手元で復元して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しているような箇所はありません・・・。


というわけで、完全に原因を究明できていませんが、ものすごく迷宮に入ってしまったので調査はこれくらいにして、場当たり的な対処でこの問題に対処しておきたいと思います・・・。


似たような問題に遭遇した方、解決されている方がいらっしゃったら、是非コメントお願いします。