使用基于令牌的身份验证时,使用数据的最佳方法是什么

时间:2016-02-16 13:01:25

标签: angularjs laravel local-storage file-storage satellizer

我正在构建一个允许用户存储注释的示例应用程序。 我已经创建了注册和登录过程。当用户注册时,他的详细信息存储在MySQL数据库中,并且令牌返回给浏览器。现在,他可以访问“个人资料”页面。

当现有用户登录时,他被重定向到个人资料页面。只有在用户注册或登录时才能访问配置文件页面。

登录后,如果他已经添加了评论,我想展示他的所有评论。

我的前端是在Angular和后端使用Laravel。对于身份验证,我使用Satellizer。

我想知道,在玩数据时最好的方法是什么,考虑到用户将添加,编辑他的评论这一事实。我应该使用localstorage并将数据存储在键值对中,还是应该创建一个json文件,每次用户添加注释或进行更改时都会更新该文件。

我想知道从服务器处理数据的最有效方法是什么,这样即使它扩展到10000个用户和每个用户的大量数据,应用程序也很快。

由于

2 个答案:

答案 0 :(得分:1)

您应该在更改时在服务器上更新它,而不是仅依赖localstorage。您可以使用localstorage进行缓存,但它应仅用于不可变数据,它不应该用于将要更改的数据。

因此,在这种情况下,您将通过API添加和更新新评论(理想情况下是RESTful评论!)。一旦您进行了更改,您就可以在本地存储注释,并且只有在用户发表新注释时才更新注释,但是您很快就会遇到数据在不同客户端上无效的问题。 (即如果您在另一台计算机上更新注释,则另一台计算机不会注意到这一点。)

或者,您可以缓存注释,然后只需ping服务器以查明是否添加了新注释。例如,这可以使用HEAD请求来检查评论资源上的最后修改日期。

答案 1 :(得分:1)

您可以在用户浏览器上本地存储评论数据,但您应该正确管理它。

我不知道你的服务器有多少负载以及现在投入的时间是否值得。

  • 您可以提取评论并将其存储在本地
  • 用户添加评论,然后在本地更新并向服务器发送请求
    • 如果请求失败,您需要跟踪请求响应,因此请通知用户并从本地删除注释。
    • 如果请求成功,那么您可以继续前进。

** facebook使用这个"成功第一"途径 用户做了一个动作,他看到它立即发生,在后台它可能需要几秒钟,只有当它失败时他们会通知你。

**看看他们的评论过程,当你评论时,它会立即出现,没有加载......但是在BG中负载发生了。