我使用Play 1.2.3 for Java在Heroku中遇到了一个奇怪的问题:Greenscript(1.2.6l)。
在本地,使用Play启动器或Foreman启动,在两种模式(DEV和PROD)中,Greenscript工作正常,压缩文件并加载css / javascript。
在Heroku我得到了这个:
2011-11-28T19:18:34+00:00 heroku[router]: GET XXXXXX.herokuapp.com/public/gs/b097436f-9941-4d07-98cf-31bd574e6351.js dyno=web.1 queue=0 wait=0ms service=26ms status=404 bytes=4222
如您所见,尝试加载压缩的js文件时出现404错误。发生此错误时,将Greenscript设置为使用文件系统或文件的内存存储。
任何人都有类似的问题,并知道解决方案?或者,如果没有,有人可以为Greenscript提出替代方案吗?
答案 0 :(得分:1)
我使用的是插件,虽然非常酷,但是在开发模式相当中减慢了页面的加载速度。结果是1.2.6k中的错误导致缓存被清除。
检查html源代码,如果你没有看到对js / css文件的引用是同样的问题!
我现在正在使用一个自定义脚本ant解压war文件,删除所有不应该存在的东西(一切都包含在当前的play war命令中)并压缩名称不的
这种方式,当我编码时,我仍然可以看到javascript但在生产中被压缩。
我对css的使用较少,但为此我手动运行lessc编译器。毕竟它并没有那么大的改变,所以我对此并不太感兴趣。
这是脚本目标的样子
<target name="minimize-war" depends="" description="removes not needed stuff from war file">
<delete dir="${buildDir}/tmp"/>
<unzip src="${buildDir}/myappname-war.war" dest="${buildDir}/tmp"/>
<foreach target="minimize" param="filename">
<fileset dir="${buildDir}/tmp/WEB-INF/application/public/javascripts" >
<include name="**/*.js"/>
<exclude name="**/*.min.js"/>
</fileset>
<param name="type" value="js"/>
</foreach>
<foreach target="minimize" param="filename">
<fileset dir="${buildDir}/tmp/WEB-INF/application/public/stylesheets" >
<include name="**/*.css"/>
</fileset>
<param name="type" value="css"/>
</foreach>
<delete dir="${buildDir}/tmp/WEB-INF/application/ant-lib"/>
<delete dir="${buildDir}/tmp/WEB-INF/application/docs"/>
<delete dir="${buildDir}/tmp/WEB-INF/application/eclipse"/>
<delete dir="${buildDir}/tmp/WEB-INF/application/liquibase"/>
<delete dir="${buildDir}/tmp/WEB-INF/application/icon-lib"/>
<delete dir="${buildDir}/tmp/WEB-INF/application/test"/>
<delete dir="${buildDir}/tmp/WEB-INF/application/test-result"/>
<delete><fileset dir="${buildDir}/tmp/WEB-INF/application" includes="*.*"></fileset></delete>
<delete file="${buildDir}/myappname-war.war"/>
<zip destfile="${buildDir}/myappname-war.war" basedir="${buildDir}/tmp"/>
</target>
<target name="minimize">
<echo>Running compress for type ${type} on file ${filename} </echo>
<java dir="${buildDir}/tmp/WEB-INF/application/public/javascripts" jar="${basedir}/ant-lib/yuicompressor-2.4.6.jar" fork="true">
<arg value="--charset" />
<arg value="UTF-8" />
<arg line="--type ${type} -o ${filename} ${filename}" />
</java>
</target>
答案 1 :(得分:1)
如果您在群集上运行,则会出现问题。结帐https://github.com/greenlaw110/greenscript/issues/30
答案 2 :(得分:0)
经过一些测试后,Greenscript似乎存在当前版本(1.2.6m)的问题,这使得它在Heroku中失败。
我使用了一种解决方法(按插件播放),但仍然在内存模式下失败,但使用文件系统。如果你们中的任何人使用Heroku并且遇到问题,我建议将此作为解决方案,同时修复Greenscript。