ruby - 使用 Sinatra 时如何控制静态 Assets 的缓存?

标签 ruby heroku sinatra

<分区>

我使用的是最新的 Sinatra,并且托管在 Heroku 上。有没有一种方法可以为从 /public 目录提供的静态 Assets 设置缓存 header ?

Sinatra 在检查任何已定义的路由之前从 /public 目录提供文件,所以我不能只在路由中使用 cache_control 方法。

/public 目录包含我的应用程序的 CSS 和 JavaScript。我不希望浏览器每次都下载这些文件,因为它们不会经常更改。

最佳答案

您可以使用 static_cache_control setting为 Sinatra 提供的静态文件设置 Cache-Control header :

set :static_cache_control, [:public, max_age: 60 * 60 * 24 * 365]

请注意,您需要使用显式数组 [...]

此外,这将适用于 public 目录中的所有文件,即您不能为 css 和 javascript 文件指定不同的 header 。

(如果您使用 Heroku 并使用 Apache 或 Nginx 来提供静态文件,那么这将不起作用,在这种情况下您需要单独配置您的网络服务器)。

关于ruby - 使用 Sinatra 时如何控制静态 Assets 的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826017/

相关文章:

node.js - heroku sh : 1: tsc: not found

python - Heroku Python仅处理第一个异常

css - 可重复使用的超薄参数?

ruby-on-rails - 如何处理XMLRPC::FaultException errors?

ruby - cassandra cql 在 where 子句中使用日期过滤数据

ruby-on-rails - 将应用程序推送到 heroku 问题

ruby - 什么是 Sinatra/Rack 的非常简单的身份验证方案

ruby - 如何在没有actionview的情况下实现form_tag助手?

ruby - 在 Ruby 中为单例类定义初始化有意义吗?

javascript - Ruby 客户端 Eventbrite API 使用 Javascript 查找事件 ID