使用Sinatra时,如何控制静态资产的缓存?

js-*_*der 11 ruby heroku sinatra

我正在使用最新的Sinatra,我正在Heroku上主持.有没有办法可以为/public目录中提供的静态资产设置缓存标头?

/public在检查已定义的任何路由之前,Sinatra提供目录中的文件,因此我不能只是cache_control路由中的方法.

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

mat*_*att 14

您可以使用该static_cache_control设置Cache-ControlSinatra提供的静态文件设置标题:

set :static_cache_control, [:public, max_age: 60 * 60 * 24 * 365]
Run Code Online (Sandbox Code Playgroud)

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

此外,这将适用于目录中的所有文件public,即您无法为css和javascript文件指定不同的标头.

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