Heroku - 非常慢的放置请求更新

时间:2013-06-19 01:24:49

标签: ruby-on-rails ruby-on-rails-3 heroku ruby-on-rails-3.2

我有一个简单的博客应用程序,我在Heroku的免费5GB空间中提出。当我发送获取请求和发布请求时,响应时间很快,我得到了响应。

我的put请求也会发生同样的事情(我的应用程序中指定的标准302重定向,在我的本地服务器上完美运行)。但是,我的网页在几分钟之前不会使用新信息进行更新,有时会在实际页面上稍后几分钟(~10 - 20分钟)。

更新我查看了我的heroku rails控制台,似乎信息在那里更新了。我相信可能是浏览器/缓存问题,但我不确定为什么?

我不太清楚为什么会这样。这是我的文章控制器中的更新代码。

def update
   @article = Article.find(params[:id])

    respond_to do |format|
    if @article.update_attributes(params[:article])
      format.html { redirect_to(@article, :notice => 'Article was successfully updated.') }
      format.xml  { head :ok }
    else
      format.html { render :action => "edit" }
      format.xml  { render :xml => @article.errors, :status => :unprocessable_entity }
    end
  end
end

根据要求,这是我的尾部日志的PUT请求部分。

2013-06-19T01:13:01.124408+00:00 app[web.1]: Started PUT "/articles/5-Literary-
 Compositions-" for 99.232.11.181 at 2013-06-19 01:13:01 +0000

2013-06-19T01:13:01.445438+00:00 heroku[router]: at=info method=POST path=/articles/5-
 Literary-Compositions- host=hidden-taiga-5779.herokuapp.com fwd="99.232.11.181" dyno=web.1 
connect=2ms service=516ms status=302 bytes=138


2013-06-19T01:13:01.443470+00:00 app[web.1]: Processing by ArticlesController#update as HTML

2013-06-19T01:13:01.443470+00:00 app[web.1]:  #post information was in here, large post


2013-06-19T01:13:01.443470+00:00 app[web.1]: 
Redirected to http://hidden-taiga-5779.herokuapp.com/articles/5-Literary-Compositions-


2013-06-19T01:13:01.443470+00:00 app[web.1]: Completed 302 Found in 279ms (ActiveRecord: 71.2ms)

2 个答案:

答案 0 :(得分:1)

想要添加到你的答案,但我相信你可以在你的控制器上拥有cache_action :show,这只是正确设置它的问题。我注意到Building a Rails 3 Application with Memcache。不确定您是否阅读了此内容,但这将向您展示如何使用heroku MemCachier附加组件设置您的应用程序。因为installation会引导您完全了解您需要知道的内容。但有些事情告诉我您可能没有安装Memcahcier插件并对其进行配置。如果你没有这样做,那么一定要把cached_action :show放回你的blog_controller并安装附加组件并检查它的结果。

答案 1 :(得分:0)

我发现博客控制器中有一行:

cached_action :show

来自文件ActionController

  

动作缓存类似于页面缓存,因为缓存了响应的整个输出,但与页面缓存不同,每个请求仍然通过Action Pack。这样做的主要好处是过滤器在提供缓存之前运行,这允许对是否允许某人执行此类操作进行身份验证和其他限制。

我已经把它拿出来了,它再次正常工作。谢谢您的帮助。希望这篇文章能够帮助其他人。