Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Rails编译有无md5哈希的资产,为什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我比较新的RoR,我很好奇为什么Rails编译资产有无md5哈希生产?

我运行bundle exec rake资产:clean然后绑定exec rake资产:precompile

我的production.rb文件:

@H_705_6@myApp::Application.configure do # Code is not reloaded between requests config.cache_classes = true # Full error reports are disabled and caching is turned on config.consider_all_requests_local = false config.action_controller.perform_caching = true # Disable Rails's static asset server (Apache or nginx will already do this) config.serve_static_assets = false # Compress JavaScripts and CSS config.assets.compress = true # Don't fallBACk to assets pipeline if a precompiled asset is missed config.assets.compile = false # Generate digests for assets URLs config.assets.digest = true config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx config.assets.precompile += %w(tos.js,tos.css) config.i18n.fallBACks = true config.active_support.deprecation = :notify end

我的应用程序与名称中的散列文件一起使用,这在我的情况下应该是这样的:)

所以我有两个问题:

1)为什么编译时会发生

2)这些文件是什么(没有哈希)?

也许我没有得到什么,所以请有人解释.

@H_675_18@

解决方法

它的原因是,您可以在不知道MD5指纹的情况下访问文件(例如,在非rails应用程序中,或rails应用程序中的未由rails堆栈编译或运行的文件(例如,500 / 502状态错误页面),在这种情况下,您必须编译资源,然后在每次更新代码时更改静态HTML文件中的css / js链接(从而导致MD5哈希更改).

因此,rails产生每个资产文件的2个副本,一个具有文件名中的指纹,另一个没有(例如application-731bc240b0e8dbe7f2e6783811d2151a.css和application.css).指纹版本明显优先(参见rails asset pipeline guide中的“what is fingerprinting and why should I care”).但不消化的版本是作为回退.

作为这个问题的最后一个想法,我将读取以下拉动请求到rails git repo:https://github.com/rails/rails/pull/5379,他们正在讨论未消化的文件名的优缺点,以及是否可以关闭编译的他们.

HTH

@H_675_18@ @H_675_18@

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – Rails编译有无md5哈希的资产,为什么?全部内容,希望文章能够帮你解决ruby-on-rails – Rails编译有无md5哈希的资产,为什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。