我正在尝试使用 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 脚本(仅用于测试):
#!/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 脚本主体被丢弃
有什么办法可以完成吗?