0

我在 Heroku 中使用 Play 1.2.3 for Java 的 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 的替代方案吗?

4

3 回答 3

1

我正在使用该插件,虽然它非常酷,但它在开发模式下大大减慢了页面的加载速度。锦上添花的是1.2.6k中的错误导致缓存被清除。

检查 html 源代码,如果您没有看到对 js/css 文件的引用,也是同样的问题!

我现在正在使用一个自定义脚本 ant 来解压缩 war 文件,删除所有不应该存在的东西(所有内容都包含在当前的 play war 命令中)并压缩名称不以min.js结尾的 javascript 文件

这样,当我编码时,我仍然可以看到 javascript,但在生产中被压缩了。

我对 css 使用 less,但为此我手动运行 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>
于 2011-11-29T17:31:18.107 回答
1

如果您在集群上运行,则会出现问题。结帐https://github.com/greenlaw110/greenscript/issues/30

于 2012-01-17T23:29:16.257 回答
0

经过一些测试,Greenscript 似乎在当前版本(1.2.6m)之前存在问题,这使其在 Heroku 中失败。

我使用了一种解决方法(Press plugin for Play),它在内存模式下仍然失败,但可以使用文件系统。如果你们中的任何一个人使用 Heroku 并且遇到问题,我会建议在 Greenscript 得到修复时将其作为解决方案。

于 2011-11-29T20:00:01.680 回答