如何替换localStorage实现Tumblr博客的全端访问计数器?
Tumblr博客全局访问计数器解决方案
问题背景
我想给我的Tumblr博客加一个访问计数器,但目前用localStorage的代码只能统计单个访客自己的访问次数,没法统计所有访客的总访问量,应该用什么方案替换?
当前使用的代码:
var visitCount = localStorage.getItem("page_view"); if (visitCount) { visitCount = Number(visitCount) + 1; localStorage.setItem("page_view", visitCount); } else { visitCount = 1; localStorage.setItem("page_view", 1); } counterContainer.innerHTML = visitCount;
可行替换方案
要统计所有访客的全局访问量,必须把计数存储在服务器端——因为客户端存储(比如localStorage)只能保存当前用户的数据,无法跨访客同步。以下是几种实用方案:
方案一:使用第三方嵌入式计数器服务
很多免费的计数器服务提供直接嵌入的脚本代码,你只需要把这段代码加到Tumblr主题的HTML里,就能自动统计全局访问量。这类服务会在自己的服务器上维护计数,每次页面加载时自动更新并显示总访问数,无需自己写后端逻辑。
方案二:自己搭建简单后端接口
如果你有服务器或者能用无服务器云函数(比如Vercel、Cloudflare的免费函数服务),可以自己写一个极简的计数接口:
- 后端逻辑:每次收到前端请求,就把服务器存储的计数加1,然后返回最新数值(可以用数据库、Redis或者文件存储计数,高访问量建议用Redis避免并发问题)
- 前端代码替换:把原来的localStorage代码换成请求后端接口的逻辑:
// 替换原localStorage代码 fetch('你的后端接口地址') .then(res => res.json()) .then(data => { counterContainer.innerHTML = data.visitCount; }) .catch(err => console.log('请求计数接口失败:', err));
举个Node.js+Express的后端示例(用文件存储计数,仅作演示):
const express = require('express'); const fs = require('fs'); const app = express(); // 允许跨域请求(因为Tumblr博客和你的后端域名不同) app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); next(); }); app.get('/get-visit-count', (req, res) => { fs.readFile('count.txt', 'utf8', (err, currentCount) => { let count = err ? 0 : parseInt(currentCount); count++; fs.writeFile('count.txt', count.toString(), () => { res.json({ visitCount: count }); }); }); }); app.listen(3000, () => console.log('计数接口运行中'));
方案三:利用Tumblr主题自带功能
部分付费或定制化Tumblr主题已经内置了全局访问计数功能,你可以检查自己的主题设置里有没有相关选项,或者更换带计数功能的主题。
内容的提问来源于stack exchange,提问作者diacetyl
相关产品推荐
相关产品推荐

