2012-02-13 174 views
0

我已经在php/mysql中创建了自己的高分“服务”,可以与我的C#/ XNA/WP7游戏一起使用。我必须重置webclient吗?

首先看起来很不错,但不关闭应用程序并启动它就不会更新。

我在做什么:

  • 开始游戏,看看排行榜,玩游戏,进入分数,看看排行榜 在这种情况下我看到的高分没有变化,但如果我重新启动游戏我做。如果我直接玩游戏不看排行榜我会看到新鲜的高分:(

我把一个断点在我从服务器返回的数据,并将其返回同样的事情。但是,如果我重新启动游戏中我得到的新鲜高分名单。

有谁知道什么是坏了?

+0

您可以显示您使用的类来调用您的Web服务吗? – loyalpenguin 2012-02-13 20:49:05

回答

1

这可能是一个缓存问题。检查您的响应对象以查看IsFromCache属性是否为true。如果是这样,有几种不同的方式来处理它。

添加在服务器侧高速缓冲存储器控制头中对PHP站点的header制品的实施例#2中描述:

实施例#2缓存指令

PHP脚本往往生成动态内容必须不会被客户端浏览器或服务器和客户端浏览器之间的任何代理缓存 缓存。很多代理服务器和客户端可以被强制禁用与 缓存:

<?php 
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
?> 

注:

您可能会发现,即使你不输出 所有的网页都没有缓存上面的标题。有许多选项,用户可以为其浏览器设置 ,这些选项会更改其默认缓存 的行为。通过发送上述标题,您应该覆盖任何可能会导致脚本输出缓存的 设置的 设置。

此外,session_cache_limiter()和session.cache_limiter 配置设置可用于正在使用会话时自动生成 正确的缓存相关的头。

更改客户端上的应用程序域的缓存策略:

// Set a default policy level for the "http:" and "https" schemes. 
HttpRequestCachePolicy policy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default); 
HttpWebRequest.DefaultCachePolicy = policy; 

更改客户端上的Web请求的缓存策略:

WebRequest request = WebRequest.Create(uri); 
// Define a cache policy for this request only. 
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore); 
request.CachePolicy = noCachePolicy; 

HttpRequestCacheLevel Enumeration MSDN文档了解更多关于客户端方法的信息。

0

我不知道这是否是你的问题,但我已经遇到了恼人的缓存问题与WebClient的。基本上,请求被高速缓存第一次,然后下次我得到相同的内容,即使页面更新。我发现无法清除缓存,所以我通过添加一个随机参数解决了问题在uri结尾。例如:

http://www.example.com/yourPage.html?nocache=45646487

这样,你确信你从不发送相同的请求两次。