由于浏览器缓存而加载了错误的内容

时间:2012-11-10 05:51:51

标签: ruby-on-rails google-chrome browser-cache

我在我的网站上使用Ruby on Rails。在一个网页中,它将根据轮询ID加载轮询信息,该轮询ID在URL中设置,如“http:// mywebsite / polls / 1”。民意调查信息包括民意调查所有者姓名,民意调查标题,民意调查中的项目图片以及投票表决的人名。

我发现有时它会加载错误的信息。也就是说,当项目图片正确时,它加载了错误的投票所有者名称,民意调查标题和其他民意调查的投票人员。我检查了后端,发现rails控制器没有任何问题。所有变量都得到了正确的值。但Chrome浏览器告诉我这个观点是错误的。

如果我清除了所有缓存并重新加载页面,那么它将正常工作。任何人都知道它为什么会发生,我该怎么办?感谢

相关行动代码:

def show
  @poll=Poll.where("is_deleted = false AND id = #{params[:id]}")[0]
  @items=@poll.items.where("is_deleted = false")
  @voted_user_ids = @poll.audiences.where('has_voted != 0').map(&:user_id).uniq
  @voted_users = User.where('id IN (?)',@voted_user_ids)
  @voted_user_names = @voted_users.map(&:user_name)
  if current_user.nil?
    @poll_vote_url = "/voted_choice"
  else 
    @current_user_name = current_user.user_name
    @poll_vote_url = "/audiences/"+@poll.id.to_s
    @if_current_user_voted = @voted_users.include?(current_user)
    @is_poll_owner = (current_user == @poll.user)
    check_item_id_in_cookies
  end
end 

def check_item_id_in_cookies
  if !cookies.signed[:item_id].nil?
    item = Item.find(cookies.signed[:item_id].to_i)
    #create audience if the voter is not the poll owner
    if current_user == item.poll.user
      flash.now[:alert] = "You can't vote on your own poll."  
      cookies.signed[:item_id] = nil
    else
      create_audience cookies.signed[:item_id]
    end
  end
end

def create_audience item_id
  @item_id = item_id.to_i
  @item = Item.find(@item_id)
  @poll = @item.poll 
  @voted_user_ids = @poll.audiences.where('has_voted != 0').map(&:user_id).uniq
  if @voted_user_ids.include?(current_user.id)
    flash.now[:alert]="You already voted."
  else
    audience = @item.poll.audiences.find{|audience| audience.user_id == current_user.id} || Audience.create(:poll_id => @poll.id,:user_id => current_user.id)
    #update audience
    audience.is_following = true
    audience.has_voted = @item.id
    audience.save
    cookies.signed[:item_id]=nil
    flash[:alert]="Thank you for your vote"
    redirect_to "/polls/#{@poll.id}"
  end
end

1 个答案:

答案 0 :(得分:0)

请在加载和重新加载页面时监控网络。特别是要求http://mywebsite/polls/1请求。还要检查响应标头。即使您没有在应用程序端执行操作,Web服务器或代理服务器也可能正在修改请求。

您可以找到有关使用chrome here网络面板的用户的帮助。