将数据存储在缓存中,并在有互联网连接时发布

时间:2016-06-10 06:00:20

标签: c# asp.net caching

我在ASP.NET中有一个Web应用程序,它允许用户输入数据,数据将存储在远程SQL表中。我想实现一种功能,即使在离线时也可以发布数据。

当用户离线时,他们可以输入数据并保存它们,并且需要将其存储在缓存中。但是,当系统连接到Internet时,我需要检索缓存中用户保存的数据并将其保存到远程SQL表中。

任何人都可以告诉我如何实现这个目标?

来自这篇文章`Build an ASP.Net web app with offline functionality 很明显,我们可以使用离线功能将数据存储在应用程序缓存中。但是,我还想将用户输入的值保存到我的数据库中。我想知道该怎么做。

1 个答案:

答案 0 :(得分:3)

本文介绍使用Application Cache,Web Storage和ASP.NET MVC的解决方案 - codemag

这篇文章很好地解释了一些事情,但为了一个完整的答案 - 基本上你需要一个应用程序清单文件,例如。

CACHE MANIFEST
# version 1

CACHE:
/home.htm
/images/logo.png
/styles/global.css
/script.js

FALLBACK:
/events.aspx /events.htm

NETWORK:
/customer/list

然后你在html中引用这个文件,例如

<html manifest="manifest.appcache">

接下来,您需要一种方法来判断是否存在连接,以及连接状态何时更改。幸运的是,这很容易使用:

window.navigator.onLine //to detect the status

//Browser raises this event when online is detected
window.addEventListener("online", function (e) {
    //save to server
}, true);

//Browser raises this event when offline
window.addEventListener("offline", function (e) {
}, true);

离线保存时,您可以保存到localStorage,例如

 localStorage.setItem(JSON.stringify(data));

然后,当您检测到连接再次联机时,它应该是一个简单的Ajax调用来保存数据。