Ответить Новая тема Новый опрос 
 Очистить кэш браузера
Огонекопт
Новичок
Сообщений: 3
Регистрация: 23-02-2021


23-02-2021 23:20
Всем привет!
Решил немного "побездельничать" - убрал привязку аватарки сотрудников к PrestaShop.com и сделал возможность самому сотруднику загружать свою морду лица.
Час работы - все готово, кроме одного нюанса: фотка в правом верхнем углу админки после смены аватарки меняется только после чистки кэша браузера через ctrl-f5.
Мелочь, но неприятная.
Гугл-шмугл: Нужно отправить заголовки
Код:
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

Не изобретая велосипед (т.к. в этом вопросе сильно плаваю) скопировал из AdminThemesController.php и немного подправил, получилось в AdminEmployeesController.php так:
Код:
public function init()
    {
        // No cache for auto-refresh uploaded logo
        header('Cache-Control: no-cache, no-store, must-revalidate');
        header('Pragma: no-cache');
        header('Expires: 0');
        parent::init();

    }

Естественно не помогает. Версия 1.6
????
Заранее спасибо!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


24-02-2021 12:36
Два решения.
1) Если изображения складывать в /img/e, напр.: /img/e/ID_АДМИНИСТРАТОРА.jpg, тогда переписать метод Employee->getImage на подобный:
Код:
public function getImage()
{
    if(is_file($this->image_dir . $this->id . '.' . $this->image_format))
        if($time = filemtime($this->image_dir . $this->id  . '.' . $this->image_format))
            return Tools::getAdminImageUrl(basename($this->image_dir) . '/' . $this->id . '.' . $this->image_format . '?' . $time);

    return Tools::getAdminImageUrl('prestashop-avatar.png');
}


2) В директории /img/e создать файл .htaccess и добавить в него подобный код:
Код:
<IfModule mod_headers.c>
    Header add Cache-Control "no-store, no-cache, must-revalidate"
</IfModule>

Не забудьте в браузере сбросить кеш!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Огонекопт
Новичок
Сообщений: 3
Регистрация: 23-02-2021


24-02-2021 14:43
Цитата:( Алекс @ 24-02-2021 13:36 Смотреть сообщение )
Код:
public function getImage()
{
    if(is_file($this->image_dir . $this->id . '.' . $this->image_format))
        if($time = filemtime($this->image_dir . $this->id  . '.' . $this->image_format))
            return Tools::getAdminImageUrl(basename($this->image_dir) . '/' . $this->id . '.' . $this->image_format . '?' . $time);

    return Tools::getAdminImageUrl('prestashop-avatar.png');
}
Переменная $time - это что?
Наверное $time = time()? и $time > filemtime(.. ?


Сообщение отредактировал Огонекопт (24-02-2021 15:46)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Огонекопт
Новичок
Сообщений: 3
Регистрация: 23-02-2021


24-02-2021 15:39
Второй способ чего-то не заработал, а вот первый помог. Немного допилю его для улучшения.
Спасибо!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос