<分区>
我使用的是最新的 Sinatra,并且托管在 Heroku 上。有没有一种方法可以为从 /public
目录提供的静态 Assets 设置缓存 header ?
Sinatra 在检查任何已定义的路由之前从 /public
目录提供文件,所以我不能只在路由中使用 cache_control
方法。
/public
目录包含我的应用程序的 CSS 和 JavaScript。我不希望浏览器每次都下载这些文件,因为它们不会经常更改。
<分区>
我使用的是最新的 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/