由于网络资产无法在 GAE 上运行以动态压缩 js/css,因此似乎最好的方法是在部署时进行。
经过大量的谷歌搜索后,我想出了下面的脚本来实现这一点。
起初我认为最好的办法是保留 javascript 路径base.html
并简单地压缩 css/js。
cssmin 压缩 css 并覆盖原始文件。然而,闭包不允许覆盖原来的,这个概念已经失败了。
第二个问题是,即使我得到了覆盖原始文件的闭包,缓存也会成为问题。出于这个原因,每个缩小的 css/js 部署都应该在文件名中带有一个随机数,以便在新部署后实际选择新版本。有了我提出的概念,这将是不可能的。
因此,实现这一目标的唯一方法是修改base.html
withsed
或其他东西。
在我重新发明轮子之前,有没有更好的方法来做到这一点?非常感谢
import sys, os
import cssmin
def main():
if len(sys.argv) == 1:
return
appId = sys.argv[1]
print "appId", appId
cmd = r'java -jar compiler.jar --js=/src/application/static/f11/f11.js --js_output_file=/src/application/static/f11/f11.min.js'
os.system(cmd)
output = cssmin.cssmin(open('/src/application/static/f11/f11.css').read())
f = open('/src/application/static/f11/f11.css','w')
f.write(output)
# Perform appcfg.py to update GAE server
cmd = r'"\google_appengine\appcfg.py"'
os.system(cmd + " update . " + " -A %s"%appId)
if __name__ == "__main__":
main()