跟踪访问者上次查看的项目


Tracking last viewed items of visitors

我有一个使用 Codeigniter 创建的非常 AJAX 式的列表网页,我希望注册用户能够区分他们以前查看过哪些列表。

当前尝试:单击列表时,列表 ID 通过$.post()发送到服务器端 PHP,后者将(使用 INSERT... ON DUPLICATE KEY UPDATElisting_iduser_idview_timestamp插入到一个表中,并在自动增量时viewed_id。每次访问者进行新的搜索时,所有带有user_id listing_id都会通过 .getJSON() 从 MySQL 表中检索,并且通过循环,这些以前查看的列表的 CSS 都会发生变化。

我的问题是这种方法是否涉及服务器上的太多工作。

  1. 每个用户是否有一行更好,查看listing_id被序列化?
  2. 我应该使用 cookie(由 Codeigniter 自动保存到数据库中?)吗?
  3. 当用户查看通过 AJAX 查看的新列表时,插入它。但是,如果包含所有查看列表ID的cookie不存在,则仅检索一次已查看列表的ID,否则在将新查看的列表发送到服务器进行插入后,列表ID也会插入到cookie中。这样,在执行新搜索后,无需连续查询数据库以获取已查看列表 ID 的整个列表。

注意:对于以前查看的列表listing_id的AJAX请求数量的估计,普通用户将每20秒进行一次新的搜索。

对于这种功能,我不会自发地涉及数据库并查看客户端解决方案,例如使用 localStorage 存储 Json 和数据,或者如果您想要更广泛的浏览器支持(或者需要从您的 php 代码存储它并且无法从 javascript 中存储它)。如果您必须将此信息存储在数据库中,我仍然会寻找尽可能多地在客户端上缓存信息的解决方案,就像您在第 3 点中描述的那样。