Использование appendTimestamp с двумя серверами

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
MoNick
Сообщения: 5
Зарегистрирован: 2017.08.30, 12:22

Использование appendTimestamp с двумя серверами

Сообщение MoNick »

Проект развернут на двух серверах, генерируется различные ссылки на скрипты.
Загрузка страницы:

Код: Выделить всё

/assets/73590cae/css/bootstrap.min.css?v=1504016992
Загрузка контента через renderAjax()

Код: Выделить всё

assets/73590cae/css/bootstrap.min.css?v=1504016993
Конфигурация

Код: Выделить всё

'assetManager' => [
            'appendTimestamp' => true,
            'hashCallback' => function ($path) {
                $path = (is_file($path) ? dirname($path) : $path) . (YII_ENV_DEV ? filemtime($path) : '');;
                return sprintf('%x', crc32($path . Yii::$app->version));
            },
],
Проблема в том что время модификации файла различное на серверах, а appendTimestamp прямо завязан на это

Код: Выделить всё

if ($this->appendTimestamp && ($timestamp = @filemtime("$basePath/$asset")) > 0) {
            return "$baseUrl/$asset?v=$timestamp";
        } else {
            return "$baseUrl/$asset";
        }
Есть ли у кого то уже готовые решения этой проблемы?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Использование appendTimestamp с двумя серверами

Сообщение samdark »

NFS?
MoNick
Сообщения: 5
Зарегистрирован: 2017.08.30, 12:22

Re: Использование appendTimestamp с двумя серверами

Сообщение MoNick »

Нет, такой вариант не подходит
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

Re: Использование appendTimestamp с двумя серверами

Сообщение shkarbatov »

samdark писал(а): 2017.08.30, 15:14NFS?
А как же резервирование? С таким успехом можно и ip hash использовать.
В итоге получится, что одно лечим - другое калечим.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Использование appendTimestamp с двумя серверами

Сообщение samdark »

Тогда вместо timestamp использовать, например, crc32.
MoNick
Сообщения: 5
Зарегистрирован: 2017.08.30, 12:22

Re: Использование appendTimestamp с двумя серверами

Сообщение MoNick »

samdark писал(а): 2017.09.01, 14:07 Тогда вместо timestamp использовать, например, crc32.
Этот способ рассматриваю как самый крайний. Так как проблема все равно останется в заголовке Last-Modified. И нет гарантии что файл может повторно запросится с одинаковым версионностью (?v=....)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Использование appendTimestamp с двумя серверами

Сообщение samdark »

crc32 будет браться от контента, то есть гарантия будет. Expire на max ставить.
Ответить