Cloudflare 通过 Cloudflare Workers 提供无服务器计算服务,后者是用于构建和部署在 Cloudflare 边缘网络上运行的JavaScript 函数的平台。 在边缘(尽可能靠近最终用户)运行代码有助于减少延迟并提高应用程序性能。 每个 Worker 都可以修改并响应 HTTP 请求。
Blueboat 就是 Cloudflare Workers 的开源替代品,旨在成为无服务器 Web 应用开发者友好的多租户平台。
一个简单的 Blueboat 应用程序如下所示:
Router.get("/", req => new Response("hello world")); Router.get("/example", req => { return fetch("https://example.com"); }); Router.get("/yaml", req => { const res = TextUtil.Yaml.stringify({ hello: "world", }); return new Response(res); });
bbcli
对于 Linux:
curl -sSL -o /tmp/bbcli.tar.gz https://github.com/losfair/bbcli/releases/download/v0.1.0-alpha.1/bbcli_linux.tar.gz
tar -xzvf /tmp/bbcli。 tar.gz -C ~
chmod +x ~ /bbcli && rm /tmp/bbcli.tar.gz
对于 macOS:
curl -sSL -o /tmp/bbcli.tar.gz https://github.com/losfair/bbcli/releases/download/v0.1.0-alpha.1/bbcli_macos.tar.gz
tar -xzvf /tmp/bbcli。 tar.gz -C ~
chmod +x ~ /bbcli && rm /tmp/bbcli.tar.gz
git clone https://github.com/losfair/blueboat-examples
cd blueboat-examples/hello-world npm i ~/bbcli deploy --vars ./hosted.vars.yaml
示例:
version: "3" services: blueboat: image: ghcr.io/losfair/blueboat:latest user: daemon ports: - "127.0.0.1:3000:3000" entrypoint: - /usr/bin/blueboat_server - -l - 0.0.0.0:3000 - --s3-bucket - my-bucket.example.com - --s3-region - us-east-1 # Uncomment this if you use a non-AWS S3-compatible service. # - --s3-endpoint # - https://minio.example.com # Uncomment this to enable logging to Kafka. # - --log-kafka # - net.univalent.blueboat-log.default:0@kafka:9092 # Uncomment this to enable geoip information in the `x-blueboat-client-country`, # `x-blueboat-client-city`, `x-blueboat-client-subdivision-1` and # `x-blueboat-client-subdivision-2` request headers. # - --mmdb-city # - /opt/blueboat/mmdb/GeoLite2-City.mmdb # Uncomment this to enable automatic Wikipedia IP blocklist query in the # `x-blueboat-client-wpbl` request header. # The database is generated with https://github.com/losfair/wpblsync. # - --wpbl-db # - /opt/blueboat/wpbl/wpbl.db environment: RUST_LOG: info AWS_ACCESS_KEY_ID: your_s3_access_key_id AWS_SECRET_ACCESS_KEY: your_s3_secret_access_key # Uncomment this to enable text rendering in canvas. # SMRAPP_BLUEBOAT_FONT_DIR: /opt/blueboat/fonts
问题内容: oracle一致性是否有任何开源替代方案? (顺便说一句,连贯性要花多少钱?) 问题答案: EhCache提供了不错的复制缓存,但与Coherence提供的功能集相去甚远。
由于使用RSAPublicKeyImpl,我收到了一些警告: 警告:RSAPublicKeyImpl是内部专有API,可能会在将来的版本导入sun.security.rsa.RSAPublicKeyImpl中删除; 我试图找到一个替代者,但没有运气。这门课的开源替代方案是什么?
问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认
问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解
null 代码如下所示: 和我想提高的班级: 我该怎么办?每个字段都在使用,但每个触发器都在使用。另外,这种情况有点特殊(OnFinalMethod需要参数)。基于上面的文章,我尝试重构这段代码,但没有成功。 你知道吗?:)
问题内容: 一个(很久以前),我写了一个网络蜘蛛,我对该线程进行了多线程处理,以使并发请求能够同时发生。那是我的Python青年时代,在我了解GIL及其为多线程代码造成的相关麻烦之前(IE,大多数时候,这些东西最终都被序列化了!)… 我想对这段代码进行重做,以使其更健壮并性能更好。基本上有两种方法可以执行此操作:我可以使用2.6+中的新多处理模块,也可以使用某种基于反应堆/事件的模型。我宁愿以后再
问题内容: 我正在尝试设置grunt.js文件,以便它仅在生产服务器上运行时才运行任务- 在本地开发服务器上运行时,我不需要每次更改都不需要我的代码,因为这是不必要的。 关于grunt.js如何区分开发/生产环境的任何想法? 问题答案: 注册生产任务: 在开发服务器上运行,在生产上运行。 您还可以为每个任务设置更精细的目标:
问题内容: 我执行了一个程序包管理器命令,将我们的项目更新为最新的二进制文件。我几乎发布了它,因为它通过了所有测试,直到幸运的是,我发现了一个需要更多调试的问题。 当我突然看到以下异常消息时,我的嘴张开了: 已达到“每小时6000个Redis请求”的免费配额限制。请访问https://servicestack.net升级到商业许可证。 如果我发布了该网站怎么办?这些做法简直令人反感!没有控制台警告