我有一个用于大多数 View 的基本布局文件。在基本布局中,我需要一个使用 grails 资源插件的模块。
<r:require module="core"/>
模块在 conf/ApplicationResources.groovy 文件中定义为
modules = {
core {
resource url: '/css/main.css'
resource url: 'js/application.js'
}
}
问题来了。我更改了 main.css 文件并构建了应用程序。更改不会反射(reflect)在浏览器中。它只会在我查看源代码然后单击 css 文件然后刷新该 css 文件时更新。浏览器缓存 css 文件。我试过将版本附加到上面的代码中,比如
modules = {
core {
resource url: '/css/main.css?version=2'
resource url: 'js/application.js'
}
}
但这也行不通。当我查看生成的 css 链接标记时,我看到 css 文件是
<link href="/app/static/bundle-bundle_core_head.css" type="text/css" rel="stylesheet" media="screen, projection" />
所以版本不工作的原因是有道理的。我试过作为最后的手段
<link href="/app/static/bundle-bundle_core_head.css?version=2" type="text/css" rel="stylesheet" media="screen, projection" />
终于更新了css文件。但我不能使用这个解决方案,因为那是一个 hack。
所以我的问题是,当我在使用 grails 资源插件时更改 css 文件时,是否有一种方法可以让 css 文件自动更新。
资源插件
http://grails.org/plugin/resources
我使用的grails版本是2.2,资源插件版本是1.1.6。
最佳答案
如果您使用 Apache 网络服务器,则可以使用 .htaccess 文件。指定相关文件,它不会被缓存。
<Files main.css>
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</Files>
关于css - 如何强制浏览器在 css 文件更改时不缓存 css 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46173012/