【问题标题】:Refreshing in RestSharp for Windows Phone在 Windows Phone 的 RestSharp 中刷新
【发布时间】:2011-12-13 16:40:31
【问题描述】:

我在我的 WP7 应用程序中成功实现了 RestSharp,但仍然存在一个问题:

当我从服务器加载资源时(例如对http://localhost:8080/cars 的 GET 请求),第一次成功返回(在这种情况下)汽车的集合。

当我第二次发出相同的请求时,我总是得到与第一次相同的结果 - 即使在此期间资源发生了变化。在查看我的服务器时,第二次根本没有发出任何请求。

我认为 RestSharp 中实现了一种缓存机制,但我认为没有办法使缓存结果无效。

是否有任何方法可以手动使 RestSharp for Windows Phone 缓存结果无效? (或者强制库从服务器获取结果的方法)

【问题讨论】:

    标签: caching rest windows-phone-7 restsharp


    【解决方案1】:

    您可以通过在服务器发回的响应上设置标头来控制资源的缓存。如果您不想缓存资源,请将缓存控制标头设置为 no-cache。
    指定资源可以使用多长时间是服务器的工作,客户端应尽最大努力尊重该信息。

    如果你真的,真的想删除缓存中的条目,你需要通过WinINet API

    【讨论】:

    • 谢谢,这就是诀窍:)。有趣的是,我很担心,因为 Silverlight 4 的 RestSharp 中的相同实现没有执行此缓存。
    • 我怀疑这是 RestSharp 使用的底层 HttpWebRequest 的差异。
    • @Matt 我认为它甚至不在 HttpWebRequest 中。在 Windows 上,执行缓存的是 WinINetCache。不确定 WP7 中的等价物是什么。
    【解决方案2】:

    作为避免缓存的快速技巧,您可以在查询字符串的末尾附加一个唯一值。当前的 DateTime(必要时包括秒和毫秒)或 GUID 是合适的。

    例如。

    var uri = "http://example.com/myrequest?rand=" + DateTime.Now().ToString();
    

    【讨论】:

    • 如果我无法在服务器端进行更改,那将是一个很好的 hack。然而,缺点是我永远不知道我的论点去了哪里(或者它们会产生什么样的影响)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    相关资源
    最近更新 更多