在 Sinatra 中缓存响应的最佳方式?

2024-05-08

我正在使用我用 Sinatra 制作的 API 构建一个简单的应用程序,该 API 返回一些 JSON。这是相当多的 JSON,我的应用程序的 API 依赖于对其他 API 的数百个请求。

我大概可以将结果缓存 5 天左右,数据完全没有问题。我只是不是 100% 确定如何实现缓存。我该如何与 Sinatra 合作呢?


就我个人而言,相对于 memcached,我更喜欢使用 redis 来处理此类事情。我有一个应用程序,我非常广泛地使用 redis,使用它的方式与您所描述的类似。如果我进行未缓存的调用,页面加载时间将超过 5 秒,而使用 redis,加载时间将降至 0.3 秒左右。您还可以设置过期时间,该时间可以很容易地更改。我会做这样的事情来从缓存中检索数据。

require 'redis'
get '/my_data/:id' do
  redis = Redis.new
  if redis[params[:id]]
    send_file redis[params[:id]], :type => 'application/json'
  end
end

然后当你想将数据保存到缓存时,也许是这样的:

require 'redis'
redis = Redis.new
<make API calls here and build your JSON>
redis[id] = json
redis.expire(id, 3600*24*5)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Sinatra 中缓存响应的最佳方式? 的相关文章

  • 如何从 Ruby 检查具有特定 pid 的进程是否正在运行?

    如果有多种方法 请列出 我只知道一个 但我想知道是否有一种更干净的 Ruby 方式 之间的区别Process getpgid and Process kill方法似乎是当 pid 存在但由另一个用户拥有时发生的情况 Process getp
  • 回形针如何更改基本名称(文件名)?

    我正在尝试更改照片的基本名称 文件名 在我的模型中我有 attr accessor image url basename has attached file image styles gt original gt 300x250 gt pn
  • 在新的 RHEL6 服务器上安装 ruby​​-filemagic gem 时遇到困难

    它似乎正在寻找 libmagic so 1 文件 我有那个文件 它位于 usr lib64 中 我没有以 root 用户身份运行此安装 我也在使用 rvm 和 Bundler 这是我的 bundle 命令的结果 当它到达 Gemfile 中
  • 如何检查水豚中的复选框?

    我正在使用 Rspec 和水豚 我怎样才能写一个步骤来检查checkbox 我试过了check按价值但它找不到我的checkbox 我不知道该怎么做 因为我实际上有相同的 ID 但值不同 这是代码
  • 如何从数组中删除空白元素?

    我有以下数组 cities Kathmandu Pokhara Dharan Butwal 我想从数组中删除空白元素并想要以下结果 cities Kathmandu Pokhara Dharan Butwal 有没有类似的方法compact
  • Capybara 的 has_selector 有哪些选项?

    我在 RSpec 中遇到此错误 有没有任何文档have selector解释了选项哈希中的每个键以及它到底有什么作用 invalid keys content should be one of text visible between co
  • Ruby 可选参数和多个参数

    我试图将方法的第一个参数设置为可选 后跟任意数量的参数 例如 def dothis value 0 args 我遇到的问题是 这似乎实际上不可能 当我打电话时dothis hey how are you good 我希望它将值设置为默认值
  • 什么是 - 获取的是一个目录 - 错误消息

    我收到这个奇怪的错误 Users gideon Documents ca ruby rubytactoe lib player rb 13 in gets Is a directory spec Errno EISDIR 玩家规格 rb r
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对
  • 下载所有 gems 依赖项

    我想通过下载任何所需的文件并将它们带到另一台计算机来安装指南针没有互联网连接 我已经下载了指南针的源包 当我在未连接的计算机上运行 gem 时 它抱怨缺少依赖项 有什么解决办法吗 这正是我遇到的问题 经过一段时间的搜索后 我找到了一个可以使
  • 检查rails devise ldap gem中的组成员身份,是否在yaml中?

    我是否应该使用 ldap yml 文件来确保使用 ldap 进行身份验证的人拥有分配给他们的正确组以允许他们进入 无论如何 我都不是 AD 专业人士 这让我很困惑 什么是组和属性 据我了解 我们在 AD 中有一个用户 他们有一个 samAc
  • 为什么我可以像调用实例方法一样调用类方法?

    我正在查看这个例子 class SQLObject def self columns return columns if columns columns DBConnection execute2 lt lt SQL first SELEC
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该
  • 将“Authorization Bearer”哈希添加到 Net::HTTP post 请求 (Ruby)

    我怎样才能添加Authorization Bearer到 POST 请求Net HTTP 我只能在文档中找到 基本身份验证 的帮助 req basic auth user pass Source https docs ruby lang o
  • 动态数据 Express.JS 的缓存控制

    如何建立一个缓存控制政策在快递 js关于 JSON 响应 我的 JSON 响应根本没有改变 所以我想积极缓存它 我找到了如何对静态文件进行缓存 但找不到如何对动态数据进行缓存 不优雅的方法是简单地添加一个调用res set 在任何 JSON
  • Ruby on Rails 离线编程

    我将离开互联网几周 但仍然想完成一个项目 我应该采取哪些步骤来确保在断开连接时能够访问我需要的内容 ruby 和 ROR 离线时 以下内容很难获得 gems docs Rails 专家博客 堆栈溢出 so gem 安装尽可能多 下载所有的轨
  • 从 Jekyll 插件向页面添加属性

    假设我想要一个包含如下内容的页面 h1 page comment count Comment s h1 for c in page comment list div strong c title strong br c content di
  • 一对一的DataMapper关联

    我对 DataMapper 非常陌生 我正在尝试为以下场景创建模型 我有许多用户 有用户名 密码等 他们也可以是玩家或裁判员或两者兼而有之 因此单表继承不是一个选项 基本模型是 class User include DataMapper R
  • 默认:Rails 资源路由的排除选项

    一个小问题 我正在将 Rails 用于 REST API 但由于它是 RESTful API 所以我并不真正需要 new or edit我的任何资源的路由 因为人们只会完全通过自动 JSON 请求而不是图形方式与此 API 交互 例如 不需
  • 何时使用node.js、sinatra、rails? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这 3 种语言 框架的最佳用途是什么 混合所有 或 2 个 有用吗 如果您正在构建一个完整的 Web 应用程序 您可能应该使用 Rails 因为

随机推荐

  • CSS 3 从底部渐变 n 像素 - Webkit/Safari

    有没有办法创建带有停止点的渐变n距离元素底部边缘的像素 例如 对于 Moz Firefox 它看起来像 moz linear gradient center bottom f00 2 d00 31px 还应该注意的是 该渐变有一个伴随渐变
  • 当工作站锁定然后解锁时,如何防止窗口大小调整?

    我们有一个在多显示器环境中运行的应用程序 用户通常将应用程序对话框分散到多个监视器上 如果用户锁定工作站 然后解锁它 我们的应用程序就会被告知调整大小 我们的用户发现这种行为令人沮丧 因为他们随后花了一些时间恢复以前的布局 我们还不确定是图
  • MySql:将多项选择数据存储在数据库中

    我的表单中有一个复选框列表 用户可以选择其中任何一个 也可以选择全部 认为用户选择他感兴趣的运动类型 我需要最好的数据库结构来存储这个用户选择 这样 将来我就可以获得所有这些数据 我想 我无法将每个 用户 ID 运动 选择作为新行存储在数据
  • 仅为一个通用命令处理程序注册 Autofac 装饰器

    我们有很多通用命令处理程序 它们由 Autofac 以开放通用方式注册 我们有几个装饰器来装饰所有的手柄 现在我需要仅为一个命令处理程序注册一个装饰器 而不影响所有其他命令处理程序 这是我的尝试 但我似乎没有正确注册 这是与我们的代码类似的
  • 将向量作为绑定传递给 for 宏时出现问题

    我有任意数量的列表 我想使用 for 宏来处理它们 我想创建一个传递向量作为绑定的函数 因为列表的数量各不相同 如果我对绑定进行硬编码 它会按我的预期工作 gt def list1 pink green gt def list2 dog c
  • 字段的特定 MessageBodyWriter

    假设我在 JAX RS 1 环境 带有 Jackson 提供程序的 RestEasy 2 中有一个数据类 如下所示 class Foo int id String name Bar bar with Bar being class Bar
  • 创建响应式 SVG 剪辑路径 / 使 SVG 响应式

    我正在尝试使用创建响应式 SVG 剪辑路径
  • HTML5 -

    Reading 一篇文章 http html5doctor com the article element on the
  • 如何在expressjs中调用另一个api?

    我有一个这样的API app get test req res gt console log this is test 和另一个API app get check req res gt I want to call test api wit
  • 如何显示图像的其他图像是无

    经过我认真思考后 我只是不知道我的代码有什么问题以及如何修改它 问题是这样的 当用户插入 url 时 如果该 url 是指向 youtube 的链接 则需要显示 youtube 缩略图 如果该网址不是 YouTube 视频的链接 则需要显示
  • 加载列表之前确定ListView的高度

    是否可以在将 ListView 呈现在屏幕上之前确定其高度 如果我的 ListView 有 3 个项目 并且高度仅限于这 3 个项目 并且 ListView 不占据整个屏幕的高度 我可以在 Android 在屏幕上显示项目之前确定高度吗 使
  • 我是否需要注册 APN 才能在 iOS 中使用 GCM 推送通知?

    我正在用 cordova 构建一个混合应用程序 我正在使用phonegap plugin push 注册到GCM 这样我就可以将通知推送到Android 我的问题是我是否需要 APNs 证书才能在 iOS 中使用 GCM 或者仅使用插件并注
  • 为什么Intellij IDEA在nodejs中显示require undefined?

    有谁知道为什么intellij IDEA强调需要 我怎样才能解决这个问题 我在 Windows 上使用 IntelliJ IDEA 15 0 3 也遇到了同样的问题 解决方案是 文件 gt 设置 gt 语言和框架 gt Nodejs 和 N
  • DocumentClientException“请求大小太大”

    我创建了 JSON byte length 太大 当我尝试使用 api java 时 documentClient createDocument getTodoCollection getSelfLink document null fal
  • Firebase Crashlytics 与 UncaughtExceptionHandler

    我集成了 Firebase Crashlytics 版本 2 9 1 来挖掘崩溃 以覆盖我的应用程序的性能和稳定性 如果应用程序有自己的 UncaughtExceptionHandler 则不会在 firebase crashlytics
  • 我们可以使用 python 变量来保存整个文件吗?

    假设我们知道所有文件都将被加载到内存中并且我们负担得起 在 python 变量中加载整个文件 可能是二进制文件 有哪些缺点 如果有 或限制 如果有 如果这在技术上是可行的 是否应该避免这种情况 为什么 关于文件大小问题 该解决方案的最大大小
  • 智能卡 CMS 解密

    我在用着充气城堡管理我的项目的加密功能 我设法使用CMS用于加密和解密 两个密钥都存储在我的文件系统中 a cert and a p12 这是我实际使用的两个函数 private static byte CmsEncrypt byte me
  • 有没有任何代码分析工具可以让我的工作变得更轻松? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近从一个刚刚退休的人那里继承了一个用托管 C 编写的程序 在花了一些时间挖掘之后 我可以诚实地说 至
  • Chrome 自定义选项卡的自定义关闭按钮

    是否可以覆盖 Android 中自定义 chrome 选项卡上默认关闭按钮的行为 例如 我们可以重定向到新的 Activity 或启动对话框 而不是仅仅关闭 chrome 选项卡吗 我不确定你是否能做到这一点 您可以尝试启动 CustomT
  • 在 Sinatra 中缓存响应的最佳方式?

    我正在使用我用 Sinatra 制作的 API 构建一个简单的应用程序 该 API 返回一些 JSON 这是相当多的 JSON 我的应用程序的 API 依赖于对其他 API 的数百个请求 我大概可以将结果缓存 5 天左右 数据完全没有问题