Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails缓存只有在手动发送if None匹配头时才起作用_Ruby On Rails_Ruby On Rails 4_Caching - Fatal编程技术网

Ruby on rails Rails缓存只有在手动发送if None匹配头时才起作用

Ruby on rails Rails缓存只有在手动发送if None匹配头时才起作用,ruby-on-rails,ruby-on-rails-4,caching,Ruby On Rails,Ruby On Rails 4,Caching,我的rails代码: def index battles = Battle.feed(current_user, params[:category_name], params[:future_time]) @battles = paginate battles, per_page: 50 if stale?([@battles, current_user.id], template: false) render 'index' end end 如果我手动发送If N

我的rails代码:

def index
  battles = Battle.feed(current_user, params[:category_name], params[:future_time])

  @battles = paginate battles, per_page: 50

  if stale?([@battles, current_user.id], template: false)
    render 'index'
  end
end
如果我手动发送If None Match标头和最后一个Etag,我会得到304状态码作为回报,如果我不手动发送它(标头会自动发送相同的If None Match标头),我会得到200状态码


我正在使用Postman rest客户端(已启用缓存)检查服务器。

我无法在这里对Rails方面的内容进行评论,但如果我跟踪您,这是正确的行为

当发送“如果不匹配”时,如果内容没有更改,您将收到304(相同的电子标签)。这基本上是说你自己或者中间的某个东西(比如代理)已经有了内容,因此不需要再次转移正文

如果省略标题,则会看到200。邮递员在默认情况下会发送一组邮件头,但它也非常精简,因为它会剥离很多邮件头。在浏览器中尝试相同的请求,您将得到一个304。您将看到您的浏览器将被设置为在可能的情况下使用缓存

如果依赖服务器端缓存,情况可能会有所不同。您可能会看到一个新的响应,但服务器实际上做得很少,但却产生了200个响应


总而言之,根据您的描述,标题所做的工作是正确的。

我不能在这里对Rails方面的事情发表评论,但如果我跟随您,这是正确的行为

当发送“如果不匹配”时,如果内容没有更改,您将收到304(相同的电子标签)。这基本上是说你自己或者中间的某个东西(比如代理)已经有了内容,因此不需要再次转移正文

如果省略标题,则会看到200。邮递员在默认情况下会发送一组邮件头,但它也非常精简,因为它会剥离很多邮件头。在浏览器中尝试相同的请求,您将得到一个304。您将看到您的浏览器将被设置为在可能的情况下使用缓存

如果依赖服务器端缓存,情况可能会有所不同。您可能会看到一个新的响应,但服务器实际上做得很少,但却产生了200个响应


根据您的描述,对标题进行总结是正确的。

嘿,当我从postman中省略标题时,我在日志中仍然会得到相同的标题,但是当我在postman中手动添加标题时,会发生一些不同的情况。另外,我想在日志中得到304个状态码,而不是200个缓存状态码。你是说当邮递员没有明确发送邮件头时,你会看到“如果没有匹配的话”?Postman只是在Chrome右侧的顶部运行,所以它可能会在后台发送其他标题。我目前无法检查,但值得再检查一次——像Fiddler或其他工具之类的东西可以在这里提供帮助。为了明确起见,如果您发送“如果不匹配”或任何其他缓存感知头,您应该只获得304状态码。我检查了我的rails日志,相同的头,只是不同的cookie和postman令牌嘿,当我从postman中省略头时,我仍然在日志中获得相同的头,但是,当我在Postman中手动添加标题时,会发生一些不同的情况。另外,我想在日志中得到304个状态码,而不是200个缓存状态码。你是说当邮递员没有明确发送邮件头时,你会看到“如果没有匹配的话”?Postman只是在Chrome右侧的顶部运行,所以它可能会在后台发送其他标题。我目前无法检查,但值得再检查一次——像Fiddler或其他工具之类的东西可以在这里提供帮助。为了清楚起见,如果您发送“if None Match”或任何其他缓存感知头,您应该只获得304状态码