Sytuacja: Prowadzę kilka darmowych wersji próbnych Magento 2 i mam ograniczoną przestrzeń HD na VPS. Z tego powodu, aby zmniejszyć ilość miejsca HD, chcę, aby Magento dowiązał pliki w trybie domyślnym lub produkcyjnym. Zauważyłem, że domyślna instalacja Magento 2 to około 420 MB po pierwszym uruchomieniu witryny, osiąga około 770 MB, więc 350 MB z tego jest kopiowanych plików.
Zmodyfikowałem wiersz: app / etc / di.xml:
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
do
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink</item>
Działa to dobrze, a strona prawidłowo utworzy dowiązania symboliczne, nawet w trybie domyślnym. Problem polega jednak na tym, że plik css nie został utworzony lub plik js-translation.json powinien utworzyć pliki, ale nie są to:
/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
Pytanie brzmi zatem: jak sprawić, by Magento generował te pliki również w trybie domyślnym lub produkcyjnym i używając dowiązań symbolicznych?
źródło
Odpowiedzi:
app/etc/di.xml
: dodaj nowy element dostategiesList
:Zakładając, że jesteś w trybie programisty, po prostu usuń zawartość
pub/static
i przejdź do swojej strony w przeglądarce - magento zregeneruje zawartość statyczną.pracował dla mnie w Magento 2.1.4 (wygenerowano styles-m.css, a inne pliki dowiązano symlinkowo).
cała magia dzieje się w
vendor/magento/framework/App/View/Asset/MaterializationStrategy/Factory.php
:Magento po prostu przegląda
stategiesList
przedmioty i wykorzystuje pierwszą strategię, która obsługuje zasób.Jak sprawić, by działał w trybie produkcyjnym?
Uwaga: ten hack zawiera edycję podstawowych plików. strzec się.
wszystkie przetestowane na Magento 2.1.4
Stores > Configuration > Advanced > Developer > Static Files Settings > No
edytuj
vendor/magento/framework/App/StaticResource.php
i ustawlaunch
funkcję tak:usuń zawartość
pub/static
i przejdź do adresu URL sklepu w przeglądarce.źródło
<item name="asset" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
?Gdy nie jest w trybie produkcyjnym, Magento 2 spróbuje utworzyć dowiązania symboliczne dla niektórych zasobów statycznych. Możesz zmienić to zachowanie, wykonując następujące czynności.
Otwórz aplikację / etc / di.xml i znajdź sekcję virtualType name = "developerMaterialization". W tej sekcji znajdziesz nazwę elementu = „view_preprocished”, którą należy zmodyfikować lub usunąć. Możesz to zmienić, zmieniając zawartość z Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Symlink na Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Kopiuj
Usuń pliki w obszarze pub / static. Nie usuwaj pliku .htaccess.
źródło