基本上在我的网站上,我有一个带有一叠盒子的侧边栏;每个框都可以由用户折叠或展开。我需要保存当前登录用户的每个框的状态。 我不想使用cookie,因为如果用户更改了浏览器或计算机,则所有框都将进入默认状态。
每次用户折叠/展开框时,是否应将此信息保存在数据库中进行查询?你会怎么处理这个?感谢。
修改:如果用户反复点击切换按钮,例如两秒内十次,只是因为他喜欢这些框的动画,该怎么办?他将在两秒钟内完成十次查询。所以也许问题应该是:何时我应该保存这些数据?
答案 0 :(得分:1)
如果您需要从多台计算机中保留这些选项,则需要某种形式的服务器端存储。
这可能是数据库或平面文件。选择取决于您的可用性,技能组合以及扩展需求。如果您只有几个用户,平面文件可能是您的最佳选择。
答案 1 :(得分:1)
每次更改框时,调用(客户端)“已更改”功能。
保留两个(客户端)状态项:发送服务器的最后一次更新时间以及是否已设置计时器。
编写一个(客户端)“更新”函数,该函数发送更新并更新状态以标记上次更新刚才。
调用更改的函数时:如果设置了计时器,则立即返回;如果从未发送过更新或超过十秒前发送了上次更新,则调用更新函数并返回。否则设置计时器以在十秒后发送更新。
定时器回调应该只是清除定时器标志并调用更新功能。
同样在unload事件中检查是否设置了计时器,如果是,则清除计时器并调用计时器回调函数。
因此,结果是当用户振动时,您立即发送除之外的更新,在这种情况下,您最多每10秒发送一次更新。
在某些情况下,您可能会丢失更新,但这很可能只会在用户正在使用切换进行,然后在计时器触发之前关闭页面时发生,在这种情况下,他可能不会注意到。