Должен ли я сбросить веб-клиент? - PullRequest
0 голосов
/ 13 февраля 2012

Я сделал свой собственный «сервис» в php / mysql для своей игры на C # / XNA / WP7.

На первый взгляд, он выглядит великолепно, но не обновляется без закрытия приложенияи запускаю его.

Что я делаю:

  • Запустите игру, посмотрите на рекорд, играйте в игру, введите счет, посмотрите на рекорд в этом сценарии. Я не вижу никаких изменений врекорд, но если я перезапущу игру, я делаю.Если я буду играть в игру напрямую, не глядя на рекорд, я увижу новый рекорд: (

Я ставлю точку останова на данные, полученные с сервера, и они возвращают то же самое.если я перезапущу игру, я получу новый список рекордов.

Кто-нибудь знает, что сломалось?

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Это может быть проблема с кешированием.Проверьте свой объект ответа, чтобы увидеть, является ли свойство IsFromCache истинным.Если это так, есть несколько различных способов справиться с этим.

Добавьте заголовки управления кэшем на стороне сервера, как описано в Примере №2 статьи header на сайте PHP:

Пример # 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;

Изменение политики кэширования для веб-запроса на клиенте:

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

См. документацию MSDN для Перечисление HttpRequestCacheLevel для получения дополнительной информации о методах на стороне клиента.

0 голосов
/ 14 февраля 2012

Я не знаю, является ли это вашей проблемой, но я столкнулся с раздражающими проблемами с кешем у веб-клиента.В основном, запрос кэшируется в первый раз, затем в следующий раз я получаю тот же контент, даже если страница была обновлена.Я не нашел способа очистить кеш, поэтому решил проблему, добавив случайный параметр в конце URI.Например:

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

Таким образом, вы уверены, что никогда не отправляете один и тот же запрос дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...