我有一个用 javascript 实现的 cloudflare Worker,想要获取部署 ID(与 cloudflare ui 中显示的相同)。我需要这段代码来生成一个缓存密钥,该缓存密钥在软件更新后会发生变化。否则我经常会因为缓存数据不兼容而崩溃。
wrangler deploy cloudflarewrapper.js
⛅️ wrangler 3.0.1 (update available 3.78.11)
-------------------------------------------------------
Total Upload: 1873.17 KiB / gzip: 278.74 KiB
Uploaded myscript (4.90 sec)
Published myscript (1.40 sec)
https://myscript.xx.workers.dev
Current Deployment ID: 506d732c-7cda-11ef-ba53-136088c204d0
^^^^^^^^
我想要这部分或完整的 uuid。仪表板、统计数据和日志中也使用相同的 ID
export default {
async fetch(request, env, ctx) {
const cacheUrl = new URL(request.url);
// Construct the cache key from the cache URL
const cacheKey = new Request(cacheUrl.toString() + currentActiveVersion, request);
^^^^^^^^^^^^^^^^^^^^
终于找到了。有文档页面 https://developers.cloudflare.com/workers/runtime-apis/bindings/version-metadata/ 可以准确处理这种情况。
导致我的第一次测试失败的是旧版本的牧马人。这个功能是相当新的(仍然是测试版),所以你可能必须先更新牧马人:
npm install wrangler --save-dev
使用当前版本 3.78.12 我成功了。
然后,将这两行添加到您的
wrangler.toml
:
[version_metadata]
binding = "CF_VERSION_METADATA"
并使用以下代码:
export default {
async fetch(request, env, ctx) {
const { id: versionId, tag: versionTag, timestamp: versionTimestamp } = env.CF_VERSION_METADATA;
console.log(versionId);
btw versionId 包含完整的 UUID。 cloudflare 的仪表板仅显示 if 的第一段。