如何使用重新加载新内容而不是缓存的页面创建 Sinatra 应用程序
How to create Sinatra app with page that reloads with new content not cache
我正在尝试为模板和教学创建一个相当小的示例。
我创建 app.rb
文件
require 'sinatra'
get '/' do
"Minimal!__ !_!"
end
我的 Gemfile 有
source 'https://rubygems.org'
gem 'rspec'
gem 'thin'
我启动了 Sinatra
$ ruby app.rb
== Sinatra (v2.0.5) has taken the stage on 4567 for development with backup from Thin
Thin web server (v1.7.2 codename Bachmanity)
Maximum connections set to 1024
Listening on localhost:4567, CTRL+C to stop
我可以访问该页面
但是当我随后更改代码时,页面被缓存并且新内容不会显示,除非我停止并启动服务器。
我已经阅读了 Sinatra 文档,但仍然无法理解。
我试过添加
set :sessions, false
和
cache_control :off
无果
您需要使用sinatra-reloader
根据示例代码,您的应用似乎属于 "classic" 类型。
因此,只需将 reloader
库加载到您的应用程序中:
require 'sinatra'
require 'sinatra/reloader' if development?
get '/' do
"Minimal!__ !_!"
end
由于您使用的是 Gemfile,请确保您也列出了 sinatra-contrib
gem(并通过 bundle install
安装):
source 'https://rubygems.org'
gem 'rspec'
gem 'thin'
gem 'sinatra', '~> 2.0`
gem 'sinatra-contrib', '~> 2.0'
否则直接安装gem:gem install sinatra-contrib
从现在起,只要您以 'development'
模式启动服务器并对您的 app.rb
或 views/index.erb
进行更改,这些更改将通过刷新反映在您的浏览器中.
如果您 遇到缓存问题,您可以告诉浏览器不要缓存任何内容:
cache_control :no_cache
您还可以将 Pragma 和 Expires 添加到 header:
headers \
"Pragma" => "no-cache",
"Expires" => "0"
并将其全部放入 before
过滤器中:
before do
cache_control :no_cache
headers \
"Pragma" => "no-cache",
"Expires" => "0"
end
或者,由于您正在进行演示,请打开浏览器的检查器并关闭缓存。 Chrome 和 Firefox 都有这个选项。
(OP 添加这个)一个电话的极简版本可能只是
headers "Expires" => "0"
在问题中
我正在尝试为模板和教学创建一个相当小的示例。
我创建 app.rb
文件
require 'sinatra'
get '/' do
"Minimal!__ !_!"
end
我的 Gemfile 有
source 'https://rubygems.org'
gem 'rspec'
gem 'thin'
我启动了 Sinatra
$ ruby app.rb
== Sinatra (v2.0.5) has taken the stage on 4567 for development with backup from Thin
Thin web server (v1.7.2 codename Bachmanity)
Maximum connections set to 1024
Listening on localhost:4567, CTRL+C to stop
我可以访问该页面
但是当我随后更改代码时,页面被缓存并且新内容不会显示,除非我停止并启动服务器。
我已经阅读了 Sinatra 文档,但仍然无法理解。
我试过添加
set :sessions, false
和
cache_control :off
无果
您需要使用sinatra-reloader
根据示例代码,您的应用似乎属于 "classic" 类型。
因此,只需将 reloader
库加载到您的应用程序中:
require 'sinatra'
require 'sinatra/reloader' if development?
get '/' do
"Minimal!__ !_!"
end
由于您使用的是 Gemfile,请确保您也列出了 sinatra-contrib
gem(并通过 bundle install
安装):
source 'https://rubygems.org'
gem 'rspec'
gem 'thin'
gem 'sinatra', '~> 2.0`
gem 'sinatra-contrib', '~> 2.0'
否则直接安装gem:gem install sinatra-contrib
从现在起,只要您以 'development'
模式启动服务器并对您的 app.rb
或 views/index.erb
进行更改,这些更改将通过刷新反映在您的浏览器中.
如果您 遇到缓存问题,您可以告诉浏览器不要缓存任何内容:
cache_control :no_cache
您还可以将 Pragma 和 Expires 添加到 header:
headers \
"Pragma" => "no-cache",
"Expires" => "0"
并将其全部放入 before
过滤器中:
before do
cache_control :no_cache
headers \
"Pragma" => "no-cache",
"Expires" => "0"
end
或者,由于您正在进行演示,请打开浏览器的检查器并关闭缓存。 Chrome 和 Firefox 都有这个选项。
(OP 添加这个)一个电话的极简版本可能只是
headers "Expires" => "0"
在问题中