免责声明:我对clojure很新。
我突然遇到一个问题,加载我的clojurescript应用程序需要15秒才能加载所有的库代码。以同样的方式设置的第二个项目没有这些问题。
CLJS build:
:cljsbuild {:builds [{:id "dev"
:source-paths ["src/cljs"]
:compiler {:output-to "resources/public/app/js/app.js"
:output-dir "resources/public/app/js/out"
:optimizations :none
:source-map true}}]}
handler.clj
(GET "/" [] (resource-response "index.html" {:root "public/app"}))
(route/resources "/" {:root "public/app"})
(route/not-found "Not Found"))
我的第一个想法是,它每次访问页面时都以某种方式重新编译所有内容,但未更改的库的文件时间戳没有改变。
第二个想法是,这可能是因为我的浏览器中存在缓存查杀,但即使在通过开发人员工具允许缓存之后,文件加载时间仍然是蜗牛。
第三个想法是两个项目之间的版本差异,但即使将第二个项目升级到最新版本,或者将第一个项目降级到以前的版本,问题仍然存在。
监控时,我还注意到java进程在页面访问时跳转到350%CPU。
我试图恢复我所做的所有更改,但无法找出问题所在。作为clojure和clojurescript的新手,我没有想法。我显然不能在每次加载页面时等待15秒,只是为了在控制台中看到一条消息。
/编辑:
Project.clj
(defproject picky "0.1.0-SNAPSHOT"
:description "project"
:url "http://example.com/FIXME"
:source-paths ["src/clj"]
:dependencies [[org.clojure/clojure "1.6.0"]
[org.clojure/tools.reader "0.8.2"]
[org.clojure/clojurescript "0.0-2371"]
[org.clojure/core.async "0.1.346.0-17112a-alpha"]
[ring/ring-core "1.3.1"]
[ring/ring-json "0.3.1"]
[compojure "1.2.1"]
[korma "0.4.0"]
[org.postgresql/postgresql "9.2-1002-jdbc4"]
[com.cemerick/friend "0.2.1"]
[lobos "1.0.0-beta3"]
[cljs-http "0.1.20"]
[secretary "1.2.1"]
[om "0.3.6"]
[com.facebook/react "0.8.0.1"]
[hiccup "1.0.5"]]
:plugins [[lein-cljsbuild "1.0.3"]
[lein-ring "0.8.13"]
[lein-pdo "0.1.1"]]
:aliases {"up" ["pdo" "cljsbuild" "auto" "dev," "ring" "server-headless"]}
:ring {:handler myapp.handler/app}
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring-mock "0.1.5"]]}}
:cljsbuild {:builds [{:id "dev"
:source-paths ["src/cljs"]
:compiler {:output-to "resources/public/js/app.js"
:output-dir "resources/public/js/out"
:optimizations :none
:source-map true}}]}
中间件是wrap-json-body
和wrap-json-response
,虽然我尝试过已经禁用了两者。
答案 0 :(得分:2)
我发现了这种巨大性能损失的罪魁祸首。经过大量的调试后,我发现项目1和项目2之间的唯一区别是资源文件夹。
项目1包括整个前端项目。很多文件都是通过bower,scss,编译过的css,编译过的cljs等等。良好的前端开发所需的一切。总计 10506 个文件。
Project 2是一个测试项目,包括一些HTML,javascript和已编译的cljs文件。 142 文件总计。
为了进行测试,我将一些文件移出了资源文件夹和ta-daa,文件加载时间缩短到几毫秒。将文件移回资源文件夹,性能得到了提升。
我将在compojure项目中提交错误报告。可能是他们还没有意识到的东西。