2012-02-13 101 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

這樣,你確信你從不發送相同的請求兩次。