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
    • 最新
    • 标签
主页 / user-12978

davidsmalley's questions

Martin Hope
davidsmalley
Asked: 2009-08-20 23:01:42 +0800 CST

Gzip 和 Javascript 压缩

  • 0

我有一个 Rails 应用程序,它使用 Rails javascript 助手将所有 javascript 连接到一个文件中。

此外,我的 Web 服务器将此 javascript 文件作为 gzip 压缩文件提供给最终用户。

由于现代浏览器将要求压缩版本 - 我是否有任何真正的好处费心在每次部署时缩小 javascript?我确信它会节省一些带宽,但如果内容已经被压缩,这将是值得的。

javascript ruby-on-rails gzip
  • 2 个回答
  • 1000 Views
Martin Hope
davidsmalley
Asked: 2009-07-18 06:57:01 +0800 CST

清漆配置仅缓存未登录用户

  • 5

我有一个 varnish+nginx 前面的 Ruby on Rails 应用程序。由于大多数站点内容都是静态的,除非您是登录用户,因此我想在用户注销时使用清漆大量缓存站点,但仅在用户登录时缓存静态资产。

当用户登录时,他们的 Cookie: 标头中将包含 cookie 'user_credentials',此外,我需要跳过 /login 和 /sessions 上的缓存,以便用户首先获得他们的 'user_credentials' cookie .

默认情况下,Rails 不设置缓存友好的 Cache-control 标头,但我的应用程序在用户未登录时设置了“public,s-max-age=60”标头。Nginx 设置为返回“远期”到期标头对于所有静态资产。

我目前的配置是在登录时完全绕过所有内容的缓存,包括静态资产——并且在注销时为所有内容返回缓存 MISS。我花了几个小时在圈子里转,这是我当前的 default.vcl

    director rails_director round-robin {
  { 
    .backend = { 
      .host = "xxx.xxx.xxx.xxx"; 
      .port = "http";
      .probe = {
        .url = "/lbcheck/lbuptest";
        .timeout = 0.3 s;
        .window = 8;
        .threshold = 3;
      }
    } 
  }
}

sub vcl_recv {

  if (req.url ~ "^/login") {
    pipe;
  }

  if (req.url ~ "^/sessions") {
    pipe;
  }
  # The regex used here matches the standard rails cache buster urls
  # e.g. /images/an-image.png?1234567
  if (req.url ~ "\.(css|js|jpg|jpeg|gif|ico|png)\??\d*$") {
    unset req.http.cookie;
    lookup;
  } else {
    if (req.http.cookie ~ "user_credentials") {
      pipe;
    }
  }

  # Only cache GET and HEAD requests
  if (req.request != "GET" && req.request != "HEAD") {
    pipe;
  }

}

sub vcl_fetch {

  if (req.url ~ "^/login") {
    pass;
  }

  if (req.url ~ "^/sessions") {
    pass;
  }

  if (req.http.cookie ~ "user_credentials") {
    pass;
  } else {
    unset req.http.Set-Cookie;
  }

  # cache CSS and JS files
  if (req.url ~ "\.(css|js|jpg|jpeg|gif|ico|png)\??\d*$") {
    unset req.http.Set-Cookie;
  } 

  if (obj.status >=400 && obj.status <500) {
    error 404 "File not found";
  }

  if (obj.status >=500 && obj.status <600) {
    error 503 "File is Temporarily Unavailable";
  }

}

sub vcl_deliver {
  if (obj.hits > 0) {
          set resp.http.X-Cache = "HIT";
  } else {
          set resp.http.X-Cache = "MISS";
  }
}
cache ruby-on-rails varnish reverse-proxy
  • 2 个回答
  • 10205 Views
Martin Hope
davidsmalley
Asked: 2009-07-16 02:54:38 +0800 CST

Gzip 与反向代理缓存

  • 2

我有一个在 Ruby on Rails 上运行的大部分静态站点,它使用 Varnish 反向代理缓存来节省对 Rails 后端的点击。

问题是用户可以登录网站,当他们登录时,我们使用 ESI(边缘包括)来显示页面的用户特定部分。

使用 ESI 意味着我们必须在 Rails 后端禁用 Gzip 压缩(使用 Nginx+passenger),否则 varnish 无法解析从后端返回的数据以运行 ESI 处理。

我的问题是,使用反向代理缓存的好处是否超过了压缩所有内容的好处?还是我应该尝试完全摆脱 ESI 并拥有两全其美的优势?

cache ruby-on-rails nginx varnish gzip
  • 2 个回答
  • 2374 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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