recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - 【面试】在大量目录数据的列表的页面用多种方式进行记录用户点击过哪些列表

这个问题比较模糊,不确定是从数据上面记录还是视觉上体现。
朋友说 CSS JS 服务端

  1. CSS 我觉得应该是 :visited,类似大概实现,但是肯定有 visited 隐私问题

  2. 那关于 JS 如何实现呢,需要讲明数据流(懵)?

  3. 服务端是通过 cookie 么,模拟的是百万条数据,具体实现?

有没有比较详细的解析,指点一二,面试一般都挖的很深。
发现每次都是饭点问问题,很快就沉了,也是尴尬。

高洛峰高洛峰2773 Il y a quelques jours326

répondre à tous(3)je répondrai

  • PHP中文网

    PHP中文网2017-04-11 10:00:41

    如果面试的是服务端开发,应该不会考你视觉上的体现,是考你如何记录这个问题;如果是面试前端,那考视觉体现也是可能的。

    前端来说,虽然 :visited 可以记录哪些点击过,哪些没点击过,但是这个记录并不准备,各个浏览器的处理也不一样,而且一旦清了记录,就不再有效了。所以如果前端要记录的话,最好还是考虑 localStorage(当然清了也失效)。cookie也不是不可能,但 cookie 不适合量较大的数据。

    后端来说,这个数据主要是记录在数据库中,处理起来比较复杂。对于关系型数据库来说,最直接的就是记录一个数据 ID 和用户 ID 的关系表,这个表中存在某个数据 ID 和某个 用户 ID 对应的记录,就说明这个数据是这个用户点击过的。当然这张表肯定是巨大的,10万数据和10万用户的情况下这个关系表的数据就是百亿级的……

    另外一种方式是采用 NoSQL 数据库的方式(关系型数据库也可以模拟),每个数据后面跟一个点击了的用户列表。或者对每个用户,保存一个点击地的数据ID列表。但即使这样,数据量也是巨大的,关键不在于数据条数,而在于每条数据占用的字节会很大。

    目前为止我是没想到更好的办法。

    répondre
    0
  • 高洛峰

    高洛峰2017-04-11 10:00:41

    后台的话这不是类似于访问日志吗?数据库建一个访问日志表或者操作记录表,后台用AOP截取对应操作然后保存。

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-11 10:00:41

    这个面试官不会是听了贺师俊的知乎live吧。。。
    建议你去听贺师俊的知乎live,里面详细分析了这个问题的各种实现方式,以及各种坑。

    répondre
    0
  • Annulerrépondre