Страница 1 из 1

Кэширование файлов unity3d браузерами

СообщениеДобавлено: 03 май 2010, 21:17
PAX
Что-то я сегодня устал, жена по магазинам затаскала. Но и на сегодня будет один трюк, который избавит от проблемы кэширования файлов unity3d браузерами.

В общем проблема известная, не знаю была ли она решена на форуме, читать времени нет. Хочу поделиться решением, которое мне подсказал сводный брат, он прогает давно на php.

Идея заключается в том, чтобы сделать адрес файла unity3d уникальным. В исходном варианте имеем нечто вроде:
Код: Выделить всё
    <object id="UnityObject" classid="clsid:444785F1-DE89-4295-863A-D46C3A781394"
         width="760" height="590" codebase="http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayer.cab#version=2,0,0,0">
      <param name="src" value="game.unity3d?" />
      <embed id="UnityEmbed" src="game.unity3d" width="760" height="590" type="application/vnd.unity" pluginspage="http://www.unity3d.com/unity-web-player-2.x" />
    </object>


Уникальность ссылки на файл unity3d можно обеспечить добавив названию файла произвольный параметр так, как это делается при передаче параметров в URL методом GET. Т.е. добавить знак вопроса и параметр, равный например рандомному числу или в моем случае юниксовскому времени в секундах.
Т.е. вместо game.unity3d будет примерно так: game.unity3d?id=<?php echo time(); ?> где id - параметр, а php-вставка <?php echo time(); ?> выдает число секунд с начала 1970г. по моему ))

В результате:
Код: Выделить всё
    <object id="UnityObject" classid="clsid:444785F1-DE89-4295-863A-D46C3A781394"
         width="760" height="590" codebase="http://webplayer.unity3d.com/download_webplayer-2.x/UnityWebPlayer.cab#version=2,0,0,0">
      <param name="src" value="game.unity3d?id=<?php echo time(); ?>" />
      <embed id="UnityEmbed" src="game.unity3d?id=<?php echo time(); ?>" width="760" height="590" type="application/vnd.unity" pluginspage="http://www.unity3d.com/unity-web-player-2.x" />
    </object>


Проверка длилась пару дней, глюков кэша не обнаружено )) Всем удачи! А я пошел спать.

Re: Кэширование файлов unity3d браузерами

СообщениеДобавлено: 03 май 2010, 22:10
gnoblin
Вообще смахивает на интересную фишку.

С кешированием проблема немного в другом - если мы поиграли в кучу других игр на флеше\юнити, то кеш браузера забивается и моя игра будет оттуда по-любому вытолкнута. Именно _этот_ момент же не решить тем как предлагаешь ты?

Re: Кэширование файлов unity3d браузерами

СообщениеДобавлено: 04 май 2010, 09:00
PAX
Нет мой пример поможет решить проблему с обновлением игры. Я столкнулся с проблемой, что при обновлении игры на сервере браузер не хочет с сервера загружать новую версию. И пока не почистишь кэш он ее не загружает.

PS: конечно я погорячился в выдаче всегда рандомных значений, трафик сервера тоже надо беречь. Вариант изменять это значение вручную при обновлении игры.

Re: Кэширование файлов unity3d браузерами

СообщениеДобавлено: 04 май 2010, 09:39
Ilya Smirnov
Может быть не обновление происходит вследствие неправильной настройки апатча? Этот файл ответственный
http://httpd.apache.org/docs/1.3/howto/htaccess.html

Re: Кэширование файлов unity3d браузерами

СообщениеДобавлено: 04 май 2010, 10:17
PAX
Лучше не предположения, а конкретный пример настройки апача ;)

К тому же на сколько я знаю этот файл управляет настройкой папок и доступом к ним, а не файлами.

Re: Кэширование файлов unity3d браузерами

СообщениеДобавлено: 04 май 2010, 11:05
Golandez
Ilya Smirnov писал(а):Может быть не обновление происходит вследствие неправильной настройки апатча? Этот файл ответственный
http://httpd.apache.org/docs/1.3/howto/htaccess.html

За настройку апача отвечает httpd.conf,хтацесс отвечает за децентрализованное управление сервером(открыть/закрыть доступ,запаролить,редиректы и подобное).

Re: Кэширование файлов unity3d браузерами

СообщениеДобавлено: 04 май 2010, 11:58
Ilya Smirnov
Не силен в апатче, но прочел вот, что

"Для управления кэшированием установлен модуль mod_expires, настройка параметров которого также производится в файле .htaccess с помощью директив. Директивой
ExpiresActive on|off
вы управляете включением/выключением кэширования соответственно. Подробное описание директив mod_expires вы можете найти на официальном сайте - http://httpd.apache.org/docs/1.3/mod/mod_expires.html. "

Re: Кэширование файлов unity3d браузерами

СообщениеДобавлено: 04 май 2010, 15:28
PAX
На моем хостинге не установлен такой модуль для апача, так что проверить как это работает не могу. А у меня платный хостинг. И что-то мне кажется мы не о том кешировании говорим. Меня волнует кэширование на стороне пользователя, т.е. его браузером, а не на сервере.

Re: Кэширование файлов unity3d браузерами

СообщениеДобавлено: 04 май 2010, 19:06
gnoblin
Нет мой пример поможет решить проблему с обновлением игры. Я столкнулся с проблемой, что при обновлении игры на сервере браузер не хочет с сервера загружать новую версию. И пока не почистишь кэш он ее не загружает.


Вот! С этого и надо было начинать - теперь понятно в чем суть фишки.
Действительно полезно :-bd