【问题标题】:Should I use cookies to speed up responsiveness of dashboard?我应该使用 cookie 来加快仪表板的响应速度吗?
【发布时间】:2016-02-18 01:59:44
【问题描述】:

我有一个带有“Wallboard”屏幕的 ASP.net MVC 应用程序。问题是这个特定页面需要很长时间才能加载(它必须在一堆数据库中循环并计算几个要显示的数字)。

当我点击“Wallboard”菜单项时,浏览器滚轮会旋转约 30 秒,然后再调出页面。我知道这对用户来说非常讨厌,所以我决定将之前显示的字符串的值(上次加载页面时)存储在 cookie 中,并在 AJAX 调用检索新值时立即使用这些字符串加载页面。

该页面表明它正在检索较新的值,但这些值不会经常更改,因此用户能够立即看到旧值很有用。

它正在工作,但我的问题是,cookie 是存储这些数据的最佳方式吗?服务器根本不关心存储了什么值,只是页面立即加载而不是挂起。如果页面从未加载过,那么在 AJAX 调用完成之前,墙板是空白的。

【问题讨论】:

  • 我建议在服务器端实现一个缓存机制。

标签: javascript c# asp.net cookies


【解决方案1】:

不,这可能不是一个好主意,除非它是非常少量的数据。

我更合适的解决方案是使用Caching

例如,这会将数据库数据缓存 30 分钟,此时缓存将过期,因此任何访问该页面的人都将获得缓存版本,这将大大加快您的网站速度。

Cache.Insert("key", "database-data", null, DateTime.Now.AddMinutes(30), TimeSpan.Zero);

【讨论】:

  • 谢谢,这听起来更像是我试图做的事情,但是当我在获取数据的操作上尝试 OutputCache 时,我开始收到 OutOfMemory 异常......看起来很奇怪输出只是一个 JSON 对象。没想到会占用这么多内存。
  • @aufty 我发现使用 Cache 对象的好处是可以更好地控制缓存的内容/时间/方式……因为大多数时候 OutputCache 感觉有点失控。 .. 或者至少对我来说
【解决方案2】:

Cookie 不是在客户端存储大量数据的正确方式,因为它们会随每个请求传输到服务器。

我建议你看看Local Storage API

如果您需要存储大量数据并需要常用数据库功能,请查看 IndexedDB.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    相关资源
    最近更新 更多