YII フレームワークを使用しており、RESTful Web サービスの結果をキャッシュするために COutputCache を使用しています。RESTful Web サービスは、さまざまな HTTP ステータス コードを使用して、アクションが正常に実行されたかどうかを示します。残念ながら、HTTP ステータス コードはキャッシュに保存されません。
したがって、RESTful Web サービスがステータス 403 (未承認) などのエラーを返した場合、結果データはキャッシュに保存されます。次回同じリクエストが実行されると、正しい出力本文がキャッシュから取得されますが、HTTP ステータス コード 200 (成功) で返されますが、同じ 403 が返されるはずです。
この問題を解決するには、次の 2 つの方法があります。
- ステータス コードが 200 以外のデータをキャッシュに保存しないでください。
- http ステータス コードをキャッシュに保存し、それを使用して、コンテンツがキャッシュから取得されたときに正しいステータス コードを設定します。
できれば、2 番目のオプションを選択します。最初のオプションは、(一時的な) 回避策である可能性があります。
これらのオプションの両方を機能させるのに苦労しています。これらの 1 つ (できればオプション 2) を機能させるには、COutputCache をどのように拡張する必要がありますか?