【发布时间】:2013-11-14 03:11:04
【问题描述】:
我写了一个网站来显示我们 api 的状态。
- endpoints.rb 返回一个包含好端点和坏端点的哈希
- apiStatusWebsite.rb 正在使用 endpoints.rb 并呈现 status.erb
代码:
require 'sinatra'
require 'endpoints.rb'
def updateStatus
get '/status' do
endpointObject = Endpoints.new(getApiServerURL("qa"))
result = endpointObject.checkApiStatus()
erb :status, :locals => { :apiData => result}
end
end
- status.erb 与 html 内容
问题:
1) api 允许每 100 秒 100 个请求。当 3 个人调用 api 状态站点时,服务器向每个用户发出 45 个请求 api -> 服务器被禁止 100 秒,状态站点无用。
2) 我可以为问题 1 发送一个特殊的标头,但是状态站点可能会被滥用以在 api 上施加负载(不太可能但仍然可能)
可能的解决方案:
/status 仅显示 api 状态,但不调用 endpointObject.checkApiStatus()。此检查过程应在后台某处每 2 分钟自动发生一次,并创建一个 html 文件。此 html 文件将从 apiStatusWebsite2.rb 加载
require 'sinatra'
get '/status' do
send_file 'status.html'
end
但是如何保存当前 apiStatusWebsite.rb 呈现的这个 html 文件呢?
【问题讨论】:
-
为什么不缓存来自 API 的响应呢?无需保存 HTML 文件。
-
谢谢尝试,但你能告诉我如何在 sinatra 中使用缓存吗,我是新手。