Как рассчитывать на страницу, используя кристальный язык и kemal
У меня есть меню, пример:
<a href="/dashboard">Dashboard</a>
<a href="/list-book">List Table</a>
<a href="/book/category/">Category</a>
<a href="/book/detail/">Detail</a>
И я хочу создать быстрое выпадающее меню с наиболее просматриваемыми. Мой jquery:
var mySession = window.sessionStorage, pageCount;
window.addEventListener('load', function(){
if(!mySession.getItem("pageCount")){
mySession.setItem('pageCount', 1);
} else {
pageCount = mySession.getItem("pageCount");
pageCount = parseInt(pageCount) + 1;
mySession.setItem('pageCount', pageCount );
}
console.log('page view count of current browsing session', mySession.getItem("pageCount"));
var x = pageCount;
console.log(x)
$.ajax({
type: 'POST',
url: '/dashboard',
data: {"count":x},
complete: function(r){
alert("success");
}
});
});
И мой бэкэнд:
get "/dashboard" do |env|
render "views/dashboard.ecr"
end
post "/dashboard" do |env|
body = env.params.body
spawn do
data = {
"page" => "dashboard",
"count" => body["count"],
"user" => "admin",
}
check_page = DB1["page_count"].find_one({"page" => "dashboard"})
if check_page
DB1["page_count"].update({"page" => "dashboard"},
{
"$set" => {"count" => body["count"]},
})
else
DB1["page_count"].insert(data)
end
end
env.redirect "/dashboard"
end
Но, таким образом, посчитать всю страницу. Я буду считать страницу за страницей, каждая страница нажата пользователем. Можете мне помочь.
1 ответ
Я бы сделал это так:
Открыв страницу, пользователь отправляет GET-запрос к приложению -> route (например, "/dashboard"), соответственно, мы можем считать, что один запрос равен +1 для количества страниц панели мониторинга.
В MongoDB вы создаете коллекцию с двумя ключами:
page_name
лайкdashboard_views_count
(для названия страницы магазина) иviews
(для увеличения количества просмотров), затем вам нужно изучить оператор $inc в MongoDB. Это даст простой способ увеличить счетчик.После этого мы делаем промежуточное ПО для запросов на улов. Это помогает извлечь из пути к странице env и записать в MongoDB.
В результате это будет выглядеть на:
- Пользователь открыл '/ панель инструментов'
- Middleware перехватывает этот запрос и извлекает имя страницы из env
- Промежуточное программное обеспечение записывает имя страницы и +1 в MongoDB
PS Вместо Монго предлагаю рассмотреть Redis для встречного магазина.