为什么Rails在我的iPhone上以开发模式缓存资产?
根据,在开发和测试环境中默认情况下禁用缓存。如果我做了一个小小的CSS更改,运行为什么Rails在我的iPhone上以开发模式缓存资产?,iphone,ruby-on-rails,Iphone,Ruby On Rails,根据,在开发和测试环境中默认情况下禁用缓存。如果我做了一个小小的CSS更改,运行rails服务器并访问我的站点localhost:3000,我就可以看到我的更改。但是,如果我在iPhone上以10.0.1.2:3000访问rails服务器,CSS不会更新,即使是匿名模式下的Chrome。当我尝试不同的缓存为空的iPhone时,变化就在那里 我发现了一个描述同样问题的例子。以下是建议的解决方案: 删除public/assets目录。我没有 将config.service\u static\u a
rails服务器
并访问我的站点localhost:3000
,我就可以看到我的更改。但是,如果我在iPhone上以10.0.1.2:3000
访问rails服务器,CSS不会更新,即使是匿名模式下的Chrome。当我尝试不同的缓存为空的iPhone时,变化就在那里
我发现了一个描述同样问题的例子。以下是建议的解决方案:
- 删除
目录。我没有public/assets
- 将
config.service\u static\u assets=false添加到
。它已经在那里了environments/development.rb
- 删除
,将/tmp/cache/assets
添加到config.service\u static\u assets=false
并重新启动服务器。我试过了,但没用environments/development.rb
environments/development.rb
config:
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
如何使用iphone访问本地计算机 您是否配置了任何网络设置,或者将其推送到另一台服务器并从那里访问,因为如果您将其推送到另一台服务器,则该服务器可能正在生产模式下运行
HTH我没有iPhone要测试,但这听起来像是正常的浏览器缓存问题。请尝试以下说明。如果这样做有效,那么每次更新CSS时都需要这样做(或者J),我很确定这是因为Rails只在生产中进行指纹识别: 这意味着在开发中,缓存攻击性更强的浏览器可能会遇到这个问题 尝试将此添加到development.rb:
config.assets.digest = true
或者更可取的是,当你在做移动开发时,做一些有条件的事情
# One of the few exceptions I'd make to a no ENV variables rule
# for my rails environment config files
config.assets.digest = true if ENV["MOBILE_DEBUG"]
我也遇到了类似的问题。发生这种情况是因为我的
config/environments/development.rb
中包含了config.asset\u host=http://localhost:3000“
我已经删除了它,一切正常。我只是点击了我的开发机器的IP地址,而不是本地主机(
http://10.0.1.2:3000
而不是http://localhost:3000
)。在这种情况下,我怀疑iphone浏览器缓存与此有关,很抱歉,我不熟悉该领域,也许您可以在iphone类别中发布相同的问题,并了解其浏览器缓存的工作原理:)我添加了iPhone类别。我认为Rails的一个功能应该是通过在开发模式下向资产文件名添加哈希字符串来防止浏览器缓存。应该是这样的。您可以检查网页的来源,以确保资产URL正在更新。您的iPhone可能正在缓存HTML页面,因此它甚至看不到更新的URL。也许是某种移动优化。清除浏览器缓存是可行的,但这真的很烦人。我仍然觉得应该通过Rails实现这一点(比如在每次请求时都在资产文件名中添加UUID)。您将资产存储在应用程序中的何处?我将它们存储在app/assets
中。太棒了!谢谢你的帮助。