我在Microsoft Azure上托管了一个Ghost博客。我想确保自己可以设置Cache-Control
标头,因为现在它已将max-age
设置为0。
我正在解决此问题的方法是删除自定义web.config
(因为Azure网站使用IIS)。这就是我所拥有的:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="false">
</modules>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>
<httpProtocol>
<customHeaders>
<remove name="Cache-Control" />
<add name="Cache-Control" value="public, max-age=99" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
但是,这实际上并没有删除原始Cache-Control
标题,而是将我的值附加到它:
对我遗失的内容有任何见解?
答案 0 :(得分:1)
这个问题的解决方案比我原先想象的要简单得多。虽然我在web.config
中正确设置了标头,但服务器node.js配置正在强制执行自己的Cache-Control
规则,该规则覆盖了我的规则。
在\core\server\middleware
中有一个名为cache-control.js
的文件。里面有一个片段:
cacheControl = function cacheControl(options) {
/*jslint unparam:true*/
var profiles = {
public: 'public, max-age=0',
private: 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'
},
output;
我需要做的就是将'public, max-age=0'
调整到我想要的值。
这完全消除了对web.config
的需求。