如果您愿意,请更改标题......
我使用toto作为我网站的博客引擎。因此它使用Rack,Heroku并且所有设置都可以很好地放在文件config.ru
中,这就是我喜欢它的原因,因为它使我的一切变得简单。
我使用Rack插件:mobile detect来检测移动设备,然后重定向到其他网站。
这就是问题所在。我测试了重定向请求,在部署之后的一段时间内,重定向仅在刷新页面后才起作用,这意味着,我在iPhone上输入我的网站的URL,首先尝试将给我原始网站,而不是一个对于移动设备,在我点击刷新后,它会被重定向。
我认为这是因为服务器上的缓存(因为即使我清除手机上的所有缓存,它仍然会发生)。所以这引出了我的问题:Rack功能/插件会让我自动清除服务器上的缓存,或者在检测到移动设备时强制浏览器刷新。
我已多次使用google搜索此解决方案,其中大部分内容适用于Rails应用程序,这对我来说并不适用。我如何让它在config.ru
中全部工作?
答案 0 :(得分:1)
可能不那么简单。 Toto强制缓存其所有页面,Heroku运行Varnish。这意味着第一个请求甚至不会命中你的应用程序。
但是当您在浏览器上点击刷新时,请求可能包含no-cache
或类似内容,这会使Varnish点击您的应用,触发移动检测,然后返回重定向。< / p>
Toto中设置缓存的代码在这里:
https://github.com/cloudhead/toto/blob/master/lib/toto.rb#L345
您可以看到,如果您在开发模式下运行应用程序,则不会使用缓存。这应该是一个简单的测试,看看缓存是否确实存在问题。
https://devcenter.heroku.com/articles/config-vars#production_and_development_modes
如果可以,那么你有一个简单的解决方案,虽然不是最有效的解决方案。
在任何情况下,我认为您不能缓存页面,同时提供动态重定向。因此,页面需要保持未缓存状态,以便移动检测工作。