我有一个使用 Codeigniter 创建的非常类似于 AJAX 的列表网页,我希望注册用户能够在其中区分他们之前查看过的列表。
当前尝试:点击列表时,列表 ID 通过 $.post()
发送到服务器端 PHP,插入(使用 INSERT.. . ON DUPLICATE KEY UPDATE
) listing_id
, user_id
, view_timestamp
到表中,viewed_id
on自动递增。每次访问者进行新的搜索时,所有带有他的 user_id
的 listing_id
都会通过 .getJSON()
从 MySQL 表中检索,并通过一个循环,这些以前查看过的列表的 CSS 已更改。
我担心这种方法是否涉及服务器上的太多工作。
- 每个用户有一个单独的行是否更好,
listing_id
viewed 被序列化? - 我应该改用 cookie(由 Codeigniter 自动保存到数据库中吗?)?
- 在用户查看时插入通过 AJAX 查看的新列表。但是,如果包含所有已查看列表 id 的 cookie 不存在,则只检索一次已查看列表的 id,否则在将新查看的列表发送到要插入的服务器后,列表 id 也将插入到 cookie 中。这样,在进行新搜索后,就无需持续查询数据库以获取已查看列表 ID 的整个列表。
注意:对于对之前查看过的列表的 listing_id 的 AJAX 请求数量的估计,平均用户每 20 秒将进行一次新搜索。
最佳答案
自然而然地,对于这种功能,我不会涉及数据库,而是查看客户端解决方案,比如使用 localStorage 存储 Json 和数据,或者如果你想要更广泛的浏览器支持(或者需要从你的php 代码,不能从 javascript 执行)。如果您必须将这些信息存储在您的数据库中,我仍然会考虑尽可能在客户端缓存信息的解决方案,就像您在第 3 点中描述的那样。
关于php - 跟踪访问者最后查看的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10059333/