Situation: Ich führe einige kostenlose Testversionen von Magento 2 durch und habe nur begrenzten HD-Speicherplatz auf dem VPS. Aus diesem Grund möchte ich, dass Magento die Dateien im Standard- oder Produktionsmodus mit Symlink verknüpft, um den HD-Speicherplatz einzuschränken. Ich habe festgestellt, dass eine Standardinstallation von Magento 2 ungefähr 420 MB beträgt, sobald die Site zum ersten Mal ausgeführt wird. Sie beträgt ungefähr 770 MB, sodass 350 MB davon kopierte Dateien sind.
Ich habe geändert: app / etc / di.xml Zeile:
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
zu
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink</item>
Dies funktioniert in Ordnung und die Site erstellt die Symlinks auch im Standardmodus ordnungsgemäß. Das Problem ist jedoch, dass das CSS nicht erstellt wird oder die Datei js-translation.json die Dateien sind, die erstellt werden sollen, aber nicht:
/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
Die Frage ist also: Wie kann ich Magento dazu bringen, diese Dateien auch im Standard- oder Produktionsmodus zu generieren und Symlinks zu verwenden?
quelle
Antworten:
app/etc/di.xml
: Neues Element hinzufügen zustategiesList
:Angenommen, Sie befinden sich im Entwicklermodus, löschen Sie einfach den Inhalt von
pub/static
und gehen Sie im Browser zu Ihrer Seite. Magento generiert den statischen Inhalt neu.arbeitete für mich in Magento 2.1.4 (styles-m.css wurde generiert und andere Dateien wurden symlinked).
Die ganze Magie geschieht in
vendor/magento/framework/App/View/Asset/MaterializationStrategy/Factory.php
:Magento durchläuft nur
stategiesList
Elemente und verwendet die erste Strategie, die das Asset unterstützt.Wie funktioniert es im Produktionsmodus?
Haftungsausschluss: Dieser Hack enthält die Bearbeitung von Kerndateien. in acht nehmen.
alle auf magento 2.1.4 getestet
Stores > Configuration > Advanced > Developer > Static Files Settings > No
Bearbeiten
vendor/magento/framework/App/StaticResource.php
undlaunch
Funktion so aussehen lassen:Löschen Sie den Inhalt von
pub/static
und besuchen Sie die URL Ihres Shops in einem Browser.quelle
<item name="asset" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
?Wenn Magento 2 nicht im Produktionsmodus ist, versucht es, Symlinks für einige statische Ressourcen zu erstellen. Sie können dieses Verhalten folgendermaßen ändern.
Öffnen Sie die App / etc / di.xml und suchen Sie den Abschnitt virtualType name = "developerMaterialization". In diesem Abschnitt finden Sie einen Elementnamen = "view_preprocessed", der geändert oder gelöscht werden muss. Sie können es ändern, indem Sie den Inhalt von Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Symlink in Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Copy ändern
Löschen Sie die Dateien unter pub / static. Bitte löschen Sie die .htaccess-Datei nicht.
quelle