Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Tipps & Tricks ›

Beschleunige dein Drupal und spare Speicherplatz. Schwierigkeitsgrad: für vortgeschrittene

Eingetragen von drruebe (271)
am 27.09.2016 - 18:50 Uhr in
  • Tipps & Tricks
  • Drupal 7.x oder neuer

Wer kennt es nicht?
Man legt ein Produkt an mit 100 Produktvariationen und dem selben Bild.
Als Beispiel: Ein Schließzylinder in Länge 30/30 mit 3 bis 20 Schlüsseln.
Weitere in Längen 30/35, 30/40, 30/45, ..., 50/60.
So hat man, selbst wenn man es auf die Nodes beschränkt, ganz schnell riesige Datenmengen von "einem" Bild auf dem Server und die DB bläht sich auch unendlich auf.

Module die das verhindern sollen gibt es zwar, doch scheinen die nicht mit feeds zusammen zu funktionieren.

Dieses Problem kann man recht unspektakulär lösen.

Hier gehen wir Schritt für Schritt vor.

Nachdem wir unser Produktportfolio importiert haben, sehen wir uns in der DB die Tabelle "file_managed" an.
Es kommt vor, dass die oberste "fid" auf "image-name_0.jpg" verweist.
Wir benötigen die "fid" image-name.jpg".

Als nächstes laden wir uns aus der DB die Tabelle "field_data_field_image" beziehungsweise "field_data_field_your-feldname" als "CSV-file" runter und öffnen dieses.

In der Spalte "fid" kopieren wir nun die "fid" von "image-name.jpg" in alle nachfolgenden Felder, welche das selbe Bild haben. Speichern und in der DB importieren.
Nun improtieren wir die selbe Datei nach "field_revision_field_your-fieldname"

Cache löschen, Cron ausführen.

Jetzt greifen alle Produkte auf die selbe Bilddatei zu und alle anderen Bildderivate können gelöscht werden.

Als nächstes exportieren wir die Tabelle "file_managed", öffnen diese und löschen hier die nicht mehr benötigten Zeilen, welche auf die Bildderivate zielen.
Hochladen, Cache löschen, Cron ausführen.

Wer sehr viele Produkte hat, dem rate ich:
Für jedes Produkt einen eigenen Bildverzeichnispfad.
Für jedes Produkt ein eigenes Bildfeld.
(image-field-1, image-field-2, etc.)

Ich hoffe das hilft euch ein wenig.
Beste Grüße
Frank Wiedenfeld

-------------------------------------------------

Accelerate your Drupal Commerce and save space

Who does not know it?
It creates a product with 100 product variations and the same picture.
As an example: A locking cylinder in length 30/30 of 3 to 20 keys.
More in lengths 30/35, 30/40, 30/45, ..., 50/60.
So you have, even if you look at only the Nodes, quickly huge amounts of data from "a" picture on the server and the DB inflates also infinity.

Modules are intended to prevent the are there, but do not seem to be working with feeds together.

This problem can be solved quite unspectacular.

Here we go step by step.

After we have imported our product portfolio, we are in the DB table "file_managed".
It happens that the top "fid" refers to "image-name_0.jpg".
We need the "fid" image-name.jpg ".

Next, we invite us from the DB table "field_data_field_image" or "field_data_field_your-fieldname" down as "CSV file" and open it.

In the column "fid" we will copy the "fid" of "image-name.jpg" into all these fields, which have the same image. Import and save in the DB.
Now import the same file to "field_revision_field_your-fieldname".

Clear cache, run cron.

Now grab all the products in the same image file and all other image derivatives can be deleted.

Next, we export the table "file_managed", these open and delete here unneeded rows, which are aimed at the image derivatives.
Upload, Clear cache, run Cron.

Who has very many products, I advise:
For each product its own image directory path.
For each product its own field.
(Image-field-1, image-field-2, etc.)

I hope this helps you a little bit.
Best regards
Frank Wiedenfeld

Translated with Google

‹ gelöst: Textformat unzähliger nodes mit wenigen Handgriffen ändern? Wie mit Rules die Uhrzeit in einem Datumsfeld ändern? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Genialer Tipp

Eingetragen von dinmikkith (1291)
am 28.09.2016 - 08:44 Uhr

Super Tipp Wird gleich ausprobiert. Schönes Tutorial!

https://drupal-tv.de
Drupal sehen und lernen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eine interessante

Eingetragen von Stefan.Korn (286)
am 28.09.2016 - 16:09 Uhr

Eine interessante Herangehensweise und es spricht eine "Real Life"-Problematik an und sicherlich gut das mal zu thematisieren.

Das Vorgehen zeugt von keiner Furcht vor der Datenbank :-)

IMHO:
Ein bisschen hacky und auch nicht unaufwändig ist das aber schon.
Vielleicht für eine einmalige Aktion nach einem Erstimport geeignet aber nicht unbedingt elegant und für kontinuierliche Importe eher nicht geeignet.

Wenn alle Variationen das gleiche Bild haben macht es doch vielleicht Sinn das Bild nur im zugehörigen Node zu hinterlegen.

Alternativ könnte man denke ich mit Feeds Tamper vielleicht auch eine solche Lösung schaffen die dann aber in Feeds integriert und automatisiert ist.

Weitere Option sollte das Media-Modul sein, inwiefern sich das allerdings mit Feeds verträgt weiß ich nicht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Entity Reference

Eingetragen von DrupalFan (1646)
am 28.09.2016 - 20:24 Uhr

Kann man da nicht auch mit Referenzen bzw. Entity Reference arbeiten?

Man erstellt das Bild einmal und referenziert es dann in allen Nodes, welche exakt das gleich Bild beinhalten sollen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Moin, Drupal legt für jedes

Eingetragen von drruebe (271)
am 28.09.2016 - 20:45 Uhr

Moin,
Drupal legt für jedes Bild, dass über root/bildordner importiert wird ein Derivat an "image.jpg_0, image.jpg_1, etc." und das setzt sich dann auch fort in den "Image-Styles" und schwub die wub ist die HDD voll mit Müll.

Und so wie ich es beschrieb "ich habe für jeden Schließzylinder" etwa, mind. 20 Nodes, kommen wir hier schnell phantastische Datenmengen.

Mein beschriebener Weg beinhaltet auch, dass dieses eine und einzige Bild mit einzigartigen "Bildtiteln und ??? Ersatzbeschreibungen (ich komme gerade nicht auf den Fachausdruck, für den Ersatztext, wenn das Bild nich dargestellt werden kann)" versehen werden kann.

Ich denke Feeds Temper und andere Module habe ich für diesen speziellen Fall schon bis zum exitus erfolglos probiert.

Was den Aufwand angeht: über 1500 Produkte mit etwa 35000 Produktvariationen konnte ich "nachdem ich mich darauf eingefuchst hatte" binnen gut 15 Minuten anpassen und konnte einen realen Speedzuwachs messen, da die Tabelle "file_managed" von MB auf KB zusammengeschrumpft ist und auch nicht 1000de von Bildern (img.jpg_35001) erst abgefragt werden musten

Ein entsprechendes Modul für den DB-Upgrade wünsche ich mir. Dann kann man auch News etc. mit selben Bild easy und nutzerfreundlich (Ladezeiten) automatisiert importieren.

Grundlegend denke ich, dass es bei der Entwicklung des Cores einen kleinen Denkfehler gab, der darauf abzielte, dass Drupal darauf ausgelegt ist, dass ein Bild mit gleichem Namen nicht das gleiche Bild beinhalten muss, was allerdings auch nicht wirklich falsch ist...

Beste Grüße aus Hamburg
Frank

Die Ruhe sei den Menschen heilig, nur bekloppte haben's eilig.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Taxonomie Beziehungen ausblendbar im Backend?
  • Suche Upgradeempfehlungen einer existenten Drupal7 Site auf 9/10?
  • Develop Custom Field in Views
  • Wie View mit einem Array von ids filtern?
  • Wie befülle ich den Cache automatisch? [gelöst]
  • [gelöst] "EntityMetadataWrapperException: Invalid data value given." für Datum-Feld in Webform
  • Wie kann man die Ansicht der Benutzer erweitern?
  • Paragraphs - mit drei Sprachen, die nicht immer alle übersetzt werden können.
  • Wie path/url_alias in views anzeigen?
  • Drupal 9 - PHP 8 - Modul funtkioniert nicht mehr
  • Timestamp wird in views falsch interpretiert
  • Google Fonts Drupal 7 Porto Theme
Weiter

Neue Kommentare

  • Bei Strato kann man doch
    vor 5 Tagen 2 Stunden
  • Fehlercode: SSL_ERROR_NO_CYPHER_OVERLAP
    vor 5 Tagen 5 Stunden
  • Was ist denn
    vor 6 Tagen 12 Stunden
  • Ohne das jetzt sicher zu
    vor 6 Tagen 12 Stunden
  • Kann es sein, dass das zweite
    vor 6 Tagen 13 Stunden
  • Da gibt es ehrlich gesagt
    vor 1 Woche 25 Minuten
  • [gelöst] "EntityMetadataWrapperException: Invalid data value giv
    vor 1 Woche 1 Stunde
  • Wie oben geschrieben, habe
    vor 1 Woche 23 Stunden
  • php konsole und web interface
    vor 1 Woche 1 Tag
  • PHP unterschiedliche Version des Providers
    vor 1 Woche 1 Tag

Statistik

Beiträge im Forum: 247933
Registrierte User: 19622

Neue User:

  • Davidenabs
  • climtarmut
  • VerifproMi

» Alle User anzeigen

User nach Punkten sortiert:
wla9218
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 6 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association