node.js - 使用 Node 设置 Varnish 缓存

标签 node.js ubuntu varnish

我正在尝试在我的 Ubuntu VPS 上配置 Varnish 缓存。我已经安装了它,并尝试遵循设置指南和谷歌搜索等,但我的标题似乎从未显示 Varnish 正在缓存。

我正在端口 3000 上运行 Node 服务器,但是,端口 3000 正在转发到端口 80.. 所以我不太确定这如何与 Varnish 缓存一起使用。以下是我在 varnish 中更改的相关配置选项...并且我没有触及其他任何内容。

文件:/etc/varnish/default.vcl

backend default {
  .host = "127.0.0.1";
  .port = "3000";
}

文件:/etc/default/varnish

DAEMON_OPTS="-a :80 \
         -T localhost:80 \
         -f /etc/varnish/default.vcl \
         -S /etc/varnish/secret \
         -s malloc,256m"

最佳答案

如果这是您的整个 VCL 文件,那么 Varnish 不缓存的原因有多种。首先,您应该阅读 default VCL

默认的VCL仅缓存GET和HEAD HTTP请求,并且不会缓存任何具有任何cookie的页面。由于现在大多数网站都有一些 cookie(例如 Google Analytics 跟踪 cookie),这意味着默认 VCL 不会缓存大多数网站。

您应该创建自己的 VCL,专门针对您的站点。例如,这是关于 removing cookies 的文档。您可以删除不影响页面的 cookie。 Varnish 不会缓存带有 cookie 的页面的原因是为了避免缓存带有登录 cookie 的页面,这可能会更改页面内容(例如,登录的用户会看到他们的名字。您不希望页面被缓存并提供给所有人)。

关于node.js - 使用 Node 设置 Varnish 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23034981/

相关文章:

node.js - Elastic Beanstalk 上的环境变量/oracledb

c++ - 编译 Ogre 代码时出错

varnish - 在线 C Varnish (VCL_deliver)

regex - 如何用 Varnish 添加尾部斜杠?

mobile - Varnish 正在为谷歌移动测试仪渲染桌面站点

javascript - 忽略 SetInterval 函数期间的错误并继续

javascript - Node : Asynchronous map for blocking jobs

node.js - 在哪里调用 DynamoDB 实例?一次还是每个请求一次?

python - 如何设置 PIL 加载的默认字体的大小,使其适合我的 8x8 矩阵?

node.js - 如何使用 .pfx 类型的证书修复 nodejs 中缺少的中间/链证书