【发布时间】:2020-02-27 13:07:25
【问题描述】:
我的目的是随机渲染页面内容。我使用的代码如下:
app.js
routes.get('/', function(req, res) {
var condition = Math.round(Math.random());
if (condition == 0) {
var data = ejs.render(index, {cquestions, questions});
res.send(data);
}
else {
var data = ejs.render(index, {cquestions, questions: questions2});
res.send(data);
}
});
我已经在 localhost 和 Amazon EC2 实例上全面测试了代码。 该页面在两者上都能完美运行。
但是,一旦我通过域名(由 CloudFront 分发)查询页面,页面将不会随机呈现。 我使用 CloudFront 的原因是将 SSL 添加到页面,以便我可以访问用户设备。
我猜原因可能是CloudFront将渲染的页面保存在缓存中,这样一旦我连接到服务器,页面就不会再次渲染。
但是有什么方法可以实现随机呈现页面的目标吗?
谢谢
【问题讨论】:
-
如果在
res.send(...)之前添加res.header('Cache-Control','max-age=0');会发生什么? -
@Michael-sqlbot 我认为它有效!我还更改了 CloudFront 上的 TTL
-
@Michael-sqlbot 哦,页面完全没有变化了......
-
我知道了,max-age 必须匹配 TTL。非常感谢
-
如果
Cache-Control标头真的 设置为max-age=0,则无需更改最大TTL。最大 TTL 是Cache-Controlmax-age或s-maxage中较大值的上限。较小的 max-age/s-maxage 值会覆盖最大 TTL 值。
标签: node.js amazon-ec2 https ejs amazon-cloudfront