gpt4 book ai didi

ruby-on-rails - Rails Metal (& Rack) 是实现高流量 Web 服务 api 的好方法吗?

转载 作者:行者123 更新时间:2023-12-04 18:16:28 24 4
gpt4 key购买 nike

我正在开发一个非常典型的 Web 应用程序。用户体验的主要组成部分是网站所有者将在其首页上安装的小部件。每次他们的首页加载时,小部件都会与我们的服务器对话并显示一些返回的数据。

所以这个 Web 应用程序有两个组件:

  • 网站所有者用来配置其小部件的前端 UI
  • 响应小部件的 web api 调用的后端组件

  • 以前我们在 PHP 中运行所有这些。现在我们正在试验 Rails,这对于#1(前端 UI)来说非常棒。问题是如何有效地执行 #2,即小部件信息的后端服务。显然,这比前端的负载要高得多,因为每次首页加载到我们客户的网站之一时都会调用它。

    我可以看到两种明显的方法:

    答: 并行堆栈 : 设置一个并行堆栈,它使用 Rails 以外的东西(例如我们旧的基于 PHP 的方法),但访问与前端相同的数据库

    B. rails 金属 :使用 Rails Metal/Rack 绕过 Rails 路由机制,但将 api 调用响应程序保留在 Rails 应用程序中

    我的主要问题:
  • Rails/Metal 是解决此类问题的合理方法吗?

  • 但是也...
  • 加载 Rails 环境的开销会不会还是太重?
  • 有没有办法通过 Rails 更接近金属,绕过大部分环境?
  • Rails/Metal 的性能是否会接近直接 PHP 的类似任务的性能(只是在这里寻找球场)?

  • 和...
  • 有没有比 A 和 B 都好得多的“C”选项?也就是说,在将 C 代码编译为二进制并作为 nginx 或 apache 模块安装之前的一些东西?

  • 提前感谢您的任何见解。

    最佳答案

    不是最详尽的答案,但是:

    我不会为此使用金属,而是使用页面缓存。这样,请求将由网络服务器提供服务,根本没有动态语言。创建资源时清除相应的index页。一个非常基本的例子是:

    class PostsController < ApplicationController
    caches_page :index

    def index
    @posts = Post.all
    respond_to do |format|
    format.html
    format.xml
    end
    end

    def create
    @post = Post.new(params[:post])
    respond_to do |format|
    if @post.save
    expire_page :action => :index
    format.html { redirect_to posts_path }
    format.xml
    else
    format.html { render :action => "new" }
    end
    end
    end
    end

    欲了解更多信息,请阅读 the Caching Guide .

    关于ruby-on-rails - Rails Metal (& Rack) 是实现高流量 Web 服务 api 的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2611730/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com