gpt4 book ai didi

dojo - 如何防止 Meteor 观看文件?

转载 作者:行者123 更新时间:2023-12-03 15:01:50 24 4
gpt4 key购买 nike

我想使用 Dojo ToolkitMeteor .

  • 我首先将整个 Dojo Toolkit 树复制到 /public
  • 然后,我将它包含在客户端:
    <script src="/dojo/dojo.js" data-dojo-config="async: true"></script>`

  • 一切正常,除了 Meteor 实际上监控 /public 中的每个文件进行更改,以便它可以重新启动服务器。这实际上在 localhost:3000 上的第一个请求期间导致了很长的延迟。 .

    有没有办法阻止 Meteor 观看某个目录中的文件?

    Dojo Toolkit 是 10k+ 个文件,所以我收到 EMFILE 错误声明 here ,修正为
    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 张静态图像,我最初将它们放入公共(public)文件夹中。这导致节点不断地使用近 100% 的一个 CPU 内核。由于内存有限,应用程序崩溃。

    我目前正在使用的解决方法

  • 创建文件夹public/.#static/并将所有静态 Assets 移入其中。此文件夹未被 meteor 查看
  • 带有静态前缀的网址 ( /img/cat.png -> /static/img/cat.png )
  • 安装 mime npm 包
    cd ~/.meteor/tools/latest/lib/node_modules/
    npm install mime
  • 创建一个 rawConnectionHandler 来服务 Assets (归功于:https://stackoverflow.com/a/20358612)
    服务器/static_files_handler.coffee
    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

  • 这种方法的局限性:
  • 不适合提供带有查询参数的 Assets 。正则表达式还将匹配/static/html/image.html?src=/static/img/cat.png 试图提供文件名包括参数的文件。这很容易改变。
  • Meteor 完全不知道这些文件,因此它们不会包含在 appcache list 中。如果你想让它们离线可用,请查看我添加到 https://github.com/buildhybrid/appcache-extra 的 addPaths 选项。

  • 如果您不想解决这些问题,请考虑从外部服务(例如 AWS S3)提供 Assets 。

    关于dojo - 如何防止 Meteor 观看文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11504883/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com