访问量指的是每篇文章、每个栏目甚至每个站点的访问量。访问量与数据库中某一数据相对应,比如文章访问量和文章数据对应,栏目访问量和栏目数据对应,站点访问量和站点数据对应。
由于系统同时支持动态页访问和生成静态页访问,所以在页面中必须要加相应的代码,系统才能记录相关的访问量。如发现访问了文章、栏目、站点,而系统中没有记录相应的访问量,则可能是页面上没有加上相应的统计代码。
另外需要注意的是,访问了某个页面后,系统不会立刻更新数据库,而是通过定时任务(每分钟执行一次),一次性批量写入数据库。这有助于提高系统性能,不会因为巨大的访问量频繁更新数据库,导致宕机或系统响应缓慢。如果发现访问量不会立即更新,这是正常现象。
文章访问量表为ujcms_article_ext
(8.0及更早版本为ujcms_article_buffer
)。
文章浏览量统计及显示代码(在文章模板中使用,即以article
开头的模板):
<span id="views"></span>
<script>
axios.get('${api}/article/view/${article.id?c}').then(function (response) {
$('#views').text(response.data);
});
</script>
这段代码可以获取当前文章的浏览量,同时会增加一次文章的浏览量。
栏目访问量表为ujcms_channel
(8.0及更早版本为ujcms_channel_buffer
)。
栏目访问量统计代码(在栏目模板中使用,即以channel
开头的模板):
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
由于栏目页通常无需显示访问量,只需向服务器发送一个请求,告知该栏目页被访问了即可。
站点访问量表为ujcms_site
(8.0及更早版本为ujcms_site_buffer
)。
站点访问量统计代码(所有模板皆可使用,所有模板皆有站点对象):
<div>今日访问量: <span id="siteTodayViews"></span></div>
<div>昨日访问量: <span id="siteYesterdayViews"></span></div>
<div>总访问量: <span id="siteViews"></span></div>
axios.get('${api}/site/view/${site.id?c}').then(function (response) {
$('#siteTodayViews').text(response.data.todayViews);
$('#siteYesterdayViews').text(response.data.yesterdayViews);
$('#siteViews').text(response.data.views);
});
一般所有页面的访问量都希望纳入到站点访问量里,所以需要在所有模板都加上该统计代码。