Http 如何防止Mobile Safari缓存个性化主页?

Http 如何防止Mobile Safari缓存个性化主页?,http,caching,heroku,sinatra,mobile-safari,Http,Caching,Heroku,Sinatra,Mobile Safari,我有一个web应用程序,它使用与Sinatra应用程序相同的Twitter身份验证代码 主页要么显示“使用Twitter登录”,要么显示个性化内容。登录后,您将(通过HTTP 302)重定向到主页: get '/session_auth' do if params[:oauth_verifier] access_token = twitter_client.authorize( session[:request_token], session[:request_token

我有一个web应用程序,它使用与Sinatra应用程序相同的Twitter身份验证代码

主页要么显示“使用Twitter登录”,要么显示个性化内容。登录后,您将(通过HTTP 302)重定向到主页:

get '/session_auth' do
  if params[:oauth_verifier]
    access_token = twitter_client.authorize(
      session[:request_token], session[:request_token_secret], oauth_verifier: params[:oauth_verifier])
    if twitter_client.authorized?
      user = db.load(User.to_id(twitter_client.info['screen_name'])) || User.new(login: twitter_client.info['screen_name'], twitter_access_token: access_token.token,
        twitter_secret_token: access_token.secret)
      db.save! user
      session[:user_id] = user.id
    end
  end
  redirect '/'
end
这在Firefox 14.0.1和Safari 5.1.7以及iOS模拟器中运行良好

然而,似乎iOS 5.1.1上的Mobile Safari正在缓存通用主页。这给人的印象是你没有登录,因为它仍然显示“使用Twitter登录”。重新加载将显示个性化内容

这是在Heroku,Cedar stack上运行的。没有使用HTTP缓存头


这里有什么问题?我是否应该明确告诉浏览器不要缓存主页,可能带有
缓存控件:private
头?

不同的浏览器在缓存控件头中确认不同的值


据我所知(尽管我现在无法引用任何优秀的源代码),为了确保在任何浏览器中都不执行缓存,
缓存控制
标题可以设置为
“max age=0,private,no store,no Cache,must revalidate”
,我认为这是基于Mobile Safari实现缓存错误,您可以发送一个时间戳作为查询参数。禁用缓存是通过
缓存控制:无缓存
,非
私有
,(
私有
允许通过“私有”缓存进行缓存,也可能是浏览器缓存)。谢谢,康斯坦丁。我会试试的。你为什么不回答呢?;-)因为我不确定它是否适合解决您的问题,尤其是因为我没有移动Safari可玩。