Ситуация: я провожу несколько бесплатных испытаний Magento 2 и у меня ограничено HD-пространство на VPS. По этой причине, чтобы урезать HD-пространство, я хочу использовать символическую ссылку Magento для файлов в стандартном или производственном режиме. Я заметил, что установка Magento 2 по умолчанию составляет около 420 МБ, а при первом запуске сайта она достигает 770 МБ, поэтому 350 МБ это скопированные файлы.
Я изменил: app / etc / di.xml строка:
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
в
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink</item>
Это работает нормально, и сайт будет правильно создавать символические ссылки даже в режиме по умолчанию. Однако проблема в том, что css не создан или js-translation.json - файлы, которые он должен создать, но это не так:
/pub/static/version1488209436/frontend/Magento/luma/en_US/css/styles-m.css
/pub/static/version1488209436/frontend/Magento/luma/en_US/css/styles-l.css
/pub/static/version1488209436/frontend/Magento/luma/en_US/css/print.css
/pub/static/version1488209436/frontend/Magento/luma/en_US/js-translation.json
Таким образом, вопрос заключается в следующем: как заставить Magento также генерировать эти файлы в стандартном или производственном режиме и с использованием символических ссылок?
источник
Ответы:
app/etc/di.xml
: добавить новый элемент вstategiesList
:Если вы находитесь в режиме разработчика, просто удалите содержимое
pub/static
и перейдите на свою страницу в браузере - magento восстановит статический контент.работал для меня в Magento 2.1.4 (сгенерированы styles-m.css, а другие файлы стали символическими).
вся магия происходит в
vendor/magento/framework/App/View/Asset/MaterializationStrategy/Factory.php
:Magento просто перебирает
stategiesList
предметы и использует первую стратегию, которая поддерживает актив.Как заставить его работать в производственном режиме?
Отказ от ответственности: этот хак содержит редактирование основного файла. берегитесь.
все проверено на magento 2.1.4
Stores > Configuration > Advanced > Developer > Static Files Settings > No
отредактируйте
vendor/magento/framework/App/StaticResource.php
и сделайтеlaunch
функцию похожей на это:удалите содержимое
pub/static
и перейдите по ссылке вашего магазина в браузере.источник
<item name="asset" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
?Когда не в производственном режиме, Magento 2 попытается создать символические ссылки для некоторых статических ресурсов. Вы можете изменить это поведение, выполнив следующие действия.
Откройте app / etc / di.xml и найдите раздел virtualType name = "developerMaterialization". В этом разделе вы найдете элемент name = "view_preprocessed", который необходимо изменить или удалить. Вы можете изменить его, изменив содержимое из Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Symlink на Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Copy
Удалите файлы в разделе pub / static. Пожалуйста, не удаляйте файл .htaccess.
источник