dojo – 如何防止Meteor看文件?
我想使用
Dojo Toolkit与
Meteor.
>我首先将整个Dojo Toolkit树复制到/ public中 <script src="/dojo/dojo.js" data-dojo-config="async: true"></script>` 一切正常,除了Meteor实际上监视/ public中的每个文件进行更改,以便它可以重新启动服务器.这实际上是在localhost:3000的第一个请求期间造成很长的延迟. 有没有一种防止Meteor从某个目录看文件的方法? Dojo Toolkit是10k文件,所以我得到了声明为here的EMFILE错误 sudo sh -c 'echo 16384 > /proc/sys/fs/inotify/max_user_watches'
意识到这是重复的:
generating and serving static files with Meteor
见:https://github.com/meteor/meteor/issues/437 这是我的一个主要问题.我必须提供?12000个静态图像,我最初放入公用文件夹.这导致节点不断使用一个CPU内核的近100%.由于内存有限,应用程序崩溃. 我正在使用的解决方法 >创建文件夹public /.# static /并将所有静态资产移动到其中.流星没有观看这个文件夹 cd ~/.meteor/tools/latest/lib/node_modules/ npm install mime >创建一个rawConnectionHandler来为资产提供服务(信用:https://stackoverflow.com/a/20358612) fs = Npm.require('fs') mime = Npm.require('mime') WebApp.rawConnectHandlers.use (req,res,next) -> re = /^/static/(.*)$/.exec(req.url) if re isnt null # Only handle URLs that start with /static/* filePath = process.env.PWD + "/public/.#static/" + re[1] type = mime.lookup(filePath) data = fs.readFileSync(filePath,data) res.writeHead 200,"Content-Type": type res.write data res.end() else # Other urls will have default behaviors next() return 这种方法的局限性: >不适合使用查询参数提供资产.正则表达式还将匹配/static/html/image.html?src=/static/img/cat.png尝试提供包含参数的文件名的文件.这很容易改变. 如果您不想解决问题,请考虑从外部服务(例如AWS S3)提供资产. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |