You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

低/零成本Web应用托管选型:可服务端检测站点并通知下载可用

适配需求的托管服务推荐
  • Firebase 全栈套件:是对你当前需求适配度最高的选择,本身自带Firebase Auth实现用户认证,云函数支持定时触发和出站HTTP请求,还自带FCM推送能力可以直接给全量用户发通知,全链路集成不用额外对接第三方服务,对新手门槛最低,你已经在调研的话可以直接用。
  • Vercel + Supabase:Vercel的Cron Jobs可以实现定时调度服务端函数,Supabase自带开箱即用的用户认证模块,两者打通成本低,免费额度对小体量个人应用足够。
  • AWS Amplify:自带用户认证能力,配合Lambda函数+EventBridge定时调度也能满足需求,适合后续计划扩展更多云服务功能的场景。
Firebase Cloud Functions 全天异步检测实现方案

你不需要额外搭建调度服务,Firebase自带定时触发云函数的能力,直接按以下步骤实现即可:

  1. 先安装需要的依赖:npm install axios firebase-admin firebase-functions
  2. 编写调度检测云函数,示例代码如下:
const functions = require("firebase-functions");
const axios = require("axios");
const admin = require("firebase-admin");
admin.initializeApp();

// 每10分钟触发一次的检测函数,频率可自行调整
exports.checkFilePublish = functions.pubsub.schedule("every 10 minutes").onRun(async () => {
  const targetFileUrl = "替换为你要检测的第三方站点文件链接";
  try {
    // 用HEAD请求仅获取状态码,省流量速度快
    const res = await axios.head(targetFileUrl, {
      timeout: 5000,
      headers: {"User-Agent": "自定义你的应用UA,避免被站点拦截"}
    });
    // 返回非404状态说明文件已发布
    if (res.status !== 404) {
      // 读取今日推送标记,避免重复推送
      const statusRef = admin.firestore().collection("sysConfig").doc("notifyStatus");
      const statusDoc = await statusRef.get();
      const alreadyNotified = statusDoc.exists ? statusDoc.data().todayNotified : false;
      
      if (!alreadyNotified) {
        // 给所有订阅了全量通知的用户发推送
        await admin.messaging().sendToTopic("allUsers", {
          notification: {
            title: "今日文件已发布",
            body: "目标站点的今日文件已更新,可前往查看"
          }
        });
        // 标记今日已推送
        await statusRef.set({
          todayNotified: true,
          publishTime: admin.firestore.FieldValue.serverTimestamp()
        }, {merge: true});
      }
    }
  } catch (err) {
    // 404属于正常未发布状态,仅打日志即可
    if (err?.response?.status === 404) {
      functions.logger.info("文件暂未发布,下次调度继续检测");
    } else {
      functions.logger.error("检测请求异常", err);
    }
  }
  return null;
});

// 每日零点重置推送标记,方便第二天检测
exports.resetNotifyStatus = functions.pubsub.schedule("every day 00:00").onRun(async () => {
  await admin.firestore().collection("sysConfig").doc("notifyStatus").set({
    todayNotified: false
  }, {merge: true});
  return null;
});
  1. 注意事项:
  • 检测频率不要设置过高,避免被第三方站点封IP,5-15分钟一次足够满足大部分场景的时效性要求
  • 前端用户登录直接调用Firebase Auth的SDK即可,支持邮箱、手机号、第三方登录等多种方式,集成非常简单
  • 所有用户首次登录后默认订阅allUsers的FCM主题,就可以实现全量推送

内容的提问来源于stack exchange,提问作者yellowjello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:27:01