Контролировать кэширование файлов CSS и JS MiniShop2

В MiniShop2 встроена система контроля клиентского кэширования, но она негибкая, и учитывает лишь версию Minishop2, тогда как в реальной жизни файлик может быть отредактирован и без обновления пакета. И Вот тут возникает проблема с файлом JS, так как CSS можно просто отключить в настройках и подключить его вручную, наладив контроль кэширования. Со скриптами все сложнее, так как на системной настройке завязан вывод конфига. В общем, все это можно поправить в файле

/core/components/minishop2/model/minishop2/minishop2.class.php

Находим строчку

$js = trim($this->modx->getOption('ms2_frontend_js'));

и вносим правки. Например такие:

if (preg_match('/\.js$/i', $js)) {
  $config['vl']=str_replace('type="text/javascript"',"",$config['vl']);
  
  $js_file = str_replace($config['pl'], $config['vl'], $js);
  $file_path = MODX_BASE_PATH.$js_file;
  if(file_exists($file_path)){
    $js_file .= "?file_version=".md5_file($file_path);
  }else{
  	$js_file = str_replace($config['pl'], $config['vl'], $js);
  }
  $this->modx->regClientScript($js_file);
}

В итоге получаем адрес скрипта:

.../default.js?file_version=9cf6e2309ea8cf75b836ab6abe5393f4

И при изменении содержимого этого файла хэш file_version будет меняться, не допуская загрузки устаревшего файла для частого пользователя вашего интернет-магазина.

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Наш сайт использует куки, нажмите «ОК» если вы не против
OK