如何让Mobile Safari不缓存个性化主页?

时间:2012-08-03 06:53:03

标签: http caching heroku sinatra mobile-safari

我有一个使用与Sinatra应用imonaplane相同的Twitter身份验证代码的Web应用程序。

主页显示“使用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堆栈上运行的。没有使用HTTP缓存标头。

这里有什么问题?我是否应该明确告诉浏览器不要缓存主页,可能使用Cache-Control: private标题?

1 个答案:

答案 0 :(得分:2)

不同的浏览器会在Cache-Control Header中确认不同的值。

据我所知(虽然我现在不能引用任何好的来源)确保在任何浏览器中都没有执行缓存,Cache-Control标题可以设置为"max-age=0, private, no-store, no-cache, must-revalidate"