减小Snap二进制文件的大小?

时间:2012-07-03 04:48:59

标签: haskell haskell-snap-framework

当我编译我的Snap webapp(将其部署到生产服务器)时,它出现在19MB! 是什么赋予了?这是正常的吗?我做错了吗?

我的网站只有3个静态页面,基本上是snap's init project

1 个答案:

答案 0 :(得分:2)

我猜Snap会吸引很多依赖项。这个问题的一个解决方案,不幸影响(初始)编译时间,是使用--split-objs选项安装项目所依赖的。这将产生大量不同的对象,但会使最终的可执行文件变得更小,比如小2-4倍。

$ cabal install --enable-split-objs

如果您已经安装了库,则需要先删除它们,安装新的GHC或使用沙盒自带的软件包。

您还应该使用strip命令(cabal在某些情况下会自动执行此操作)。

此外,您可以考虑使用upx压缩可执行文件,最后rsync将最不同的可执行文件上传到服务器。

使用共享库(cabal install --enable-shared)可能会有所帮助,也可能没有帮助:我没有尝试过该选项。