AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 54219
Accepted
knorv
knorv
Asked: 2009-08-15 05:49:00 +0800 CST2009-08-15 05:49:00 +0800 CST 2009-08-15 05:49:00 +0800 CST

配置 Varnish 为客户端缓存重写 Expires/Cache-Control 标头

  • 772

如何配置 Varnish,以便对匹配“*.css”的请求的所有响应都在客户端的浏览器中缓存 30 天?

我想要实现的是让 Varnish 设置正确的“Expires:”和/或“Cache-Control”设置,以便所有 CSS:s 缓存 30 天,而不管后端对客户端缓存能力的评价如何这些对象。

performance
  • 3 3 个回答
  • 12803 Views

3 个回答

  • Voted
  1. Best Answer
    knorv
    2009-08-24T10:44:22+08:002009-08-24T10:44:22+08:00

    这可以解决问题:

    sub vcl_fetch {
      ..
      if (req.url ~ "\.css$") {
        set obj.http.magicmarker = "1";
      }
      ..
    }
    
    sub vcl_deliver {
      ..
      if (resp.http.magicmarker) {
        unset resp.http.magicmarker;
        set resp.http.Cache-Control = "...";
        set resp.http.Expires = "...";
        set resp.http.Age = "...";
      }
      ..
    }
    
    • 12
  2. user2874
    2009-08-18T15:32:47+08:002009-08-18T15:32:47+08:00

    我认为 Varnish 不会让您将 VCL 规则范围限定为“*.css”。您可能需要在 Varnish 邮件列表中询问有关这方面的确切信息。应该可以按 MIME 类型确定范围。

    假设您的对象已经设置了缓存标头但您希望对其进行规范化,那么此 Varnish 文档 VCL 的修改版本应该可以帮助您:http: //varnish.projects.linpro.no/wiki/VCLExampleLongerCaching

    一般来说,Varnish 不是为了进行大量的标题或内容重写而构建的。您的 Web 服务器或 Web 应用程序应该比 Varnish 做得更好。

    • 0
  3. Stefan Caunter
    2011-10-20T18:48:15+08:002011-10-20T18:48:15+08:00

    我只需要指出清漆实际上非常适合重写标题。在 vcl_recv 中可以测试任何 url,在 vcl_fetch 中,它是 varnish 的常见应用程序。在 recv 中,您分析传入的请求。在 fetch 中,您分析后端响应。

    通常,您在 recv 中操作请求,并将其定向到后端,然后在 fetch 中操作响应,并重写标头以适应,然后将对象潜在地存储在缓存中并传递响应。

    在 fetch 你可以做

    unset beresp.http.expires;
    unset beresp.http.cache-control;
    

    也

    set beresp.http.Cache-Control = "max-age = 2678406";
    

    等等。

    • 0

相关问题

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • jvm性能调优技巧/资源?

  • 加快 MSSQL 快照复制到 SQLExpress 副本的速度

  • 聚集索引与非聚集索引?

  • 使用大量 javascript 的页面上的鱿鱼速度很慢

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve