php - 跟踪访问者最后查看的项目

标签 php javascript jquery mysql codeigniter

我有一个使用 Codeigniter 创建的非常类似于 AJAX 的列表网页,我希望注册用户能够在其中区分他们之前查看过的列表。

当前尝试:点击列表时,列表 ID 通过 $.post() 发送到服务器端 PHP,插入(使用 INSERT.. . ON DUPLICATE KEY UPDATE) listing_id, user_id, view_timestamp 到表中,viewed_id on自动递增。每次访问者进行新的搜索时,所有带有他的 user_idlisting_id 都会通过 .getJSON() 从 MySQL 表中检索,并通过一个循环,这些以前查看过的列表的 CSS 已更改。

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

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

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

最佳答案

自然而然地,对于这种功能,我不会涉及数据库,而是查看客户端解决方案,比如使用 localStorage 存储 Json 和数据,或者如果你想要更广泛的浏览器支持(或者需要从你的php 代码,不能从 javascript 执行)。如果您必须将这些信息存储在您的数据库中,我仍然会考虑尽可能在客户端缓存信息的解决方案,就像您在第 3 点中描述的那样。

关于php - 跟踪访问者最后查看的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10059333/

相关文章:

php - 连接 PHP 记录集中的符号

php - 无法获取 google recaptcha v2 以防止提交表单

php - 如何使用 curl 从远程页面的 head 标签中提取链接

jQuery 是 (':visible' )表现得很有趣。

php - 如何判断 PDO 是否找到与我的 UPDATE 查询匹配的内容以及是否已更新?

javascript - Javascript 中的原生 64 位整数

javascript - 将变量传递给 multiSelect 值

javascript - 如何在 macOS 上调用 "Installation alert"窗口

jQuery : How to know if input type is not radio

Jquery当存在多个类时选择一个类