Ruby 机架刷新页面/清除缓存(全部在config.ru中)

Ruby 机架刷新页面/清除缓存(全部在config.ru中),ruby,caching,rack,Ruby,Caching,Rack,如果你想,请更改标题 我把它用作我网站的博客引擎。因此,它使用了Rack、Heroku,所有设置都可以很好地放在文件config.ru中,这就是为什么我喜欢它,因为它让我的一切变得简单 我使用机架插件:检测移动设备,然后重定向到其他站点 这就是问题所在。我测试了重定向请求,在部署后的一段时间内,重定向只在我刷新页面后起作用,这意味着,我在iPhone上键入我的网站的URL,第一次尝试将为我提供原始站点,而不是移动站点,在我点击“刷新”后,它将被重定向 我认为这是因为服务器上的缓存(因为即使我清除

如果你想,请更改标题

我把它用作我网站的博客引擎。因此,它使用了Rack、Heroku,所有设置都可以很好地放在文件
config.ru
中,这就是为什么我喜欢它,因为它让我的一切变得简单

我使用机架插件:检测移动设备,然后重定向到其他站点

这就是问题所在。我测试了重定向请求,在部署后的一段时间内,重定向只在我刷新页面后起作用,这意味着,我在iPhone上键入我的网站的URL,第一次尝试将为我提供原始站点,而不是移动站点,在我点击“刷新”后,它将被重定向

我认为这是因为服务器上的缓存(因为即使我清除了手机上的所有缓存,它仍然会发生)。这就引出了我的问题:什么样的机架功能/插件可以让我在检测到手机时自动清除服务器上的缓存或强制浏览器刷新


我在谷歌上搜索过很多次这个解决方案,其中大部分都是针对Rails应用程序的,而这并不适合我。我如何让它在
config.ru
中工作

可能没有那么简单。Toto强制缓存其所有页面,Heroku运行Varnish。这意味着第一个请求不太可能击中你的应用程序

但当你点击浏览器上的刷新时,请求可能包括
无缓存
或类似的内容,这会使Varnish点击你的应用程序,触发移动检测,然后返回重定向

设置缓存的代码在这里:

您可以看到,如果在开发模式下运行应用程序,缓存将不会被使用。这应该是一个简单的测试,看看缓存是否确实是问题所在

如果这样做有效,那么您就有了一个简单的解决方案,尽管不是最有效的解决方案


在任何情况下,我不认为你可以缓存页面,同时提供动态重定向。因此,页面需要保持未缓存状态,以便mobile detect工作。

感谢您的回答。天气转晴了很多。也谢谢你给我指出代码行。我偶然发现了这个插件,我真的不知道它到底是做什么的,但是根据它的名字,当我第一次请求时,我能清除缓存吗?或者问题是,第一个请求甚至不会命中我的应用程序?@BPm我认为这不会满足你的要求。它没有文档,代码中有一些“待办事项”部分。这意味着它可能还没有完成代码。我会给《托托》的作者发一封电子邮件,让他参考这一页,并询问他是否有解决这个问题的好办法。同时,只需在开发模式下运行应用程序(请参阅Heroku文档如何将RACK_ENV设置为“development”)。另一个简单的解决方案是在Github上分叉Toto,只需修补代码即可删除设置缓存的行。