mod_cache を使用して、動的に生成されたコンテンツをキャッシュしようとしています。これは私の Apache 設定です:
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
CacheIgnoreCacheControl On
CacheIgnoreNoLastMod On
CacheStorePrivate On
CacheStoreNoStore On
<Location /cgi-bin>
SetHandler cgi-script
Options +ExecCGI
</Location>
これは CGI スクリプトの 1 つです (テスト用です)。
#!/opt/app/phantomjs/bin/phantomjs
var date = new Date('Sun, 01 Jan 2012 00:00:00 GMT');
console.log('Last-Modified: '+ date.toUTCString());
console.log('Cache-Control: max-age=' + (365 * 24 * 60 * 60)+ ', public');
date.setDate(date.getDate() + 365);
console.log('Expires: '+ date.toUTCString() + '\n\n');
// lengthy operation here...
console.log(content);
これは基本的に機能します。しかし、クライアントがヘッダー付きの cgi-bin を要求すると、次のようになります。If-Modified-Since
- CGI スクリプト ストリーム ヘッダー
- 数秒遅れる
- CGI スクリプト ストリームの本文
- Apache は 304 を送信します
それは私には意味がありません。Apache は、変更されていない応答を送信する前に、応答全体を待機します。
私が期待したこと:
- CGI スクリプト ストリーム ヘッダー
- Apache は 304 を送信します
- CGI スクリプトがキャンセルされるか、CGI スクリプトの本体が破棄されます
それを成し遂げる方法はありますか?