如何在本地部署的Confluence Data Center中获取页面浏览量?
针对Confluence Data Center获取页面浏览量的解决方案
核心思路
Confluence Data Center没有直接暴露浏览量的REST API,但可以通过两种可靠方式实现需求:
- 直接查询Confluence数据库:浏览量数据存储在特定的统计表中,通过数据库查询可快速获取数据
- 基于Confluence Java API开发插件:利用Confluence内部的统计管理类,通过自定义插件获取数据(符合官方规范)
方案一:数据库查询(快速落地)
步骤说明
- 确认Confluence使用的数据库类型(MySQL/PostgreSQL等),找到存储页面浏览量的表(通常表名包含
PAGE_STATS) - 通过页面ID关联查询,提取浏览次数
示例SQL(以MySQL为例)
假设目标页面ID为123456,执行以下查询:
SELECT page_id, view_count, last_viewed_date FROM AO_7B4953_PAGE_STATS WHERE page_id = 123456;
注意:表名前缀
AO_7B4953可能因Confluence版本或安装环境变化,可通过数据库的information_schema.tables表搜索%PAGE_STATS%确认实际表名
Python代码示例(数据库连接查询)
import mysql.connector def get_page_view_count(page_id, db_config): conn = mysql.connector.connect(**db_config) cursor = conn.cursor(dictionary=True) # 替换为实际环境中的统计表名 cursor.execute("SELECT view_count FROM AO_7B4953_PAGE_STATS WHERE page_id = %s", (page_id,)) result = cursor.fetchone() cursor.close() conn.close() return result['view_count'] if result else 0 # 数据库配置示例 db_config = { 'host': 'localhost', 'user': 'confluence_db_user', 'password': 'your_db_password', 'database': 'confluence' } # 获取指定页面的浏览量 print(get_page_view_count(123456, db_config))
方案二:Confluence Java插件开发(官方规范方式)
核心代码示例
通过Confluence内部API获取页面统计数据:
import com.atlassian.confluence.pages.Page; import com.atlassian.confluence.pages.PageManager; import com.atlassian.confluence.plugins.stats.manager.PageStatsManager; import com.atlassian.spring.container.ContainerManager; public class PageViewStatsFetcher { public static long getPageViewCount(long pageId) { // 获取页面管理实例 PageManager pageManager = (PageManager) ContainerManager.getComponent("pageManager"); Page targetPage = pageManager.getPage(pageId); if (targetPage == null) { return 0; } // 获取统计管理实例并查询浏览量 PageStatsManager statsManager = (PageStatsManager) ContainerManager.getComponent("pageStatsManager"); return statsManager.getViewCount(targetPage); } }
说明:该方式需开发Confluence插件,打包后部署到Data Center环境,需遵循Atlassian插件开发规范,依赖Confluence内部组件
注意事项
- 数据库查询方式需确保数据库账号拥有对应表的查询权限,Confluence版本升级后需验证表结构是否变化
- Java插件方式稳定性更高,但需要插件开发和部署权限,适合长期维护的场景
内容的提问来源于stack exchange,提问作者user7680924
相关产品推荐
相关产品推荐

