2012-03-01 39 views
0

我有几个具有相似模式的应用程序。我对如何设计流程有所了解,但希望其他人能够给我提供更好的解决方案。您可以提供更新私人数据的设计建议吗?

该应用需要通过传递数据的简单网页访问服务器上的小型数据库。数据类型由大约100条记录(大约8000-900字节)组成,这就像数据工具的名称和特征。这些数据在几个月的时间内只会改变大约1次,就像当仪器被添加到列表中一样。该应用程序将显示用户在应用程序开始时选择的列表,因此它必须在开始时查找此列表。我的问题是如何最好地将数据传送到应用程序。

我到目前为止的选择是让应用程序通过http连接获取数据,并将其首次存储在设备上的私有文件中。然后,每次应用程序将检查私人文件是否已创建,然后从私人文件中读取。这应该加快数据的加载速度,因为它不必每次都等待服务器连接。

这工作正常,直到我添加一个新的仪器。此时,我需要让应用程序返回到服务器以获取数据的全新副本并重建该文件。我此时的解决方案是在应用程序确定是否存在专用文件来查询服务器以更改数据状态之前做出简单的请求(Y或N)。如果有变化,那么应用程序将删除私人文件,然后获取数据的全新副本。

这种方法意味着总是至少有一个请求到服务器。每次只获得新鲜的副本会更好吗?有一些其他技术可以使用吗?建议?

回答

0

这种情况实际上是在HTTP规范中明确提到的 - “If-Modified-Since”HTTP标题说“只有在日期x之后修改数据才发送数据”;如果数据未被修改,则服务器应返回“304 Not Modified”状态。

因此,在伪代码:

App starts 
App issues HTTP request with "If-modified-since" header 
Server checks if data was modified 
if YES: 
    server responds with new data 
    app deletes old cache file, replaces with new file 
if NO: 
    server issues 304 status 
App shows cache data 
+0

很有意思!我会仔细研究。我想每个应用程序用户都会在请求中放置一个修改后的数据文件日期。然后只需检查状态并按照您的建议进行操作即可。我知道问会给我一个更好的解决方案。 – 2012-03-01 16:27:01

+0

这似乎是一个难以解决的问题。我有一个IIS 6服务器生成标准的ASP网页。我可以在标题中获取最后修改的日期,但始终只是实际.asp页面的日期。我放入标题的日期似乎被忽略。 – 2012-03-01 23:43:11

+0

http://jagbarcelo.blogspot.com/2009/03/conditional-get-and-etag-implementation.html – 2012-03-02 09:37:41

相关问题