Modul Cache leeren ohne Admin-Login

Thema wurde von Anonymous, 12. Mai 2021 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.547
    Danke erhalten:
    1.000
    Danke vergeben:
    866
    #1 Anonymous, 12. Mai 2021
    Zuletzt bearbeitet: 12. Mai 2021
    Hallo,

    in manchen Situationen (z.B. nach fehlgeschlagenen Modul-Installationen oder bei Update-Problemen) muss man den Cache leeren. Blöd, wenn man dann nicht mehr in den Admin kommt. Das Löschen von Cache-Dateien per FTP geht dann zwar noch, ist aber von Gambio nicht empfohlen.

    Lösung: Sich mittels der REST Api auf diesen Fall vorbereiten, so dass man in jedem Fall, egal in welchem Zustand der Shop ist, den Cache von außen sicher und ohne Folgeschäden leeren kann.

    Sicherheit:
    @Till (Gambio) sagt, dass zu häufiges Löschen die Shop-Performance beeinträchtigen kann. Um dann ein etwa minütliches Löschen durch einen Mitbewerber zu unterbinden, wird ein Gambio-Zugriffs-Token in der URL abgefragt. Diesen musst du für einen beliebigen Admin aus deinem Gambio Backend erzeugen unter "Kunden->Rollen und Berechtigungen->API Tokens verwalten". Der Aufruf des Scripts muss dann mit dem Token als Parameter "sec" aufgerufen werden, also z.B. (Link nur für registrierte Nutzer sichtbar.). Da der Token sehr lang ist, empfehle ich ein Bookmark.

    Installation & Konfiguration:
    Das Modul besteht aus nur einer Datei, das im Kopf-Bereich ein paar Konfigurationsmöglichkeiten bietet:


    Code:
    // *****************************************************
    // KONFIGURATION
    // *****************************************************
    
    $domain = 'https://www.meinshop.de/'; // Domain mit endendem / z.B. https://www.gambio.de/
    $gtoken = 'a1234'; // API-Token, den man im Gambio Backend für einen Admin erstellen muss unter "Kunden->Rollen und Berechtigungen->API Tokens verwalten"
    
    
    
    // *****************************************************
    // *****************************************************

    Nach getätigten Eingaben muss die Datei nur noch irgendwo hin hochgeladen werden und dann mit (Link nur für registrierte Nutzer sichtbar.)MeinErstellterGambioAdminToken aufgerufen werden.


    Edit: Modul entfernt. Die REST API kann die intendierte Funktion laut Gambio nicht zuverlässig erfüllen und ist daher zwecklos. In der REST API ist auch keine Funktion enthalten oder vorgesehen, die das erreichen könnte.
     
  2. KlausK

    KlausK Erfahrener Benutzer

    Registriert seit:
    7. Oktober 2012
    Beiträge:
    505
    Danke erhalten:
    97
    Danke vergeben:
    19
    Das Script arbeitet zwar wie es soll. Entfernt werden aber lediglich die Dateien in /cache/smarty/
    Sollten nicht auch die Dateien in /cache/ entfernt werden?
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.547
    Danke erhalten:
    1.000
    Danke vergeben:
    866
    Das ist wohl eine Frage für Gambio. Wenn da ein Ordner fälschlicherweise nicht entfernt wird, würde ich von einem Bug in der REST API ausgehen. Oder er soll tatsächlich nicht geleert werden?
     
  4. Wilken (Gambio)

    Wilken (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    7. November 2012
    Beiträge:
    17.775
    Danke erhalten:
    6.757
    Danke vergeben:
    2.046
    Der Shop hat eine grosse Anzahl verschiedener Caches für verschiedene Zwecke. Die speichern ganz verschiedene Informationen zwischen, damit bei einem Seitenaufruf diverse Arbeiten/Rechenleistungen immer wieder erbracht werden müssen.

    Zentral: Es gibt nicht den einen Cache, es gibt die vielen Cache.

    Die Frage wäre dann: welche Caches müssen per API leerbar sein? Sicher nicht jeder, aber welche?

    Das betrachten wir wenn dann aus funktionaler Sicht, nicht aus Ordnersicht. Dass zum Beispiel aber der Ordner cache leer sein muss, ist nicht der Fall. Darin lebt zum Beispiel der PHP Klassencache der Mainfactory, ein Verzeichnis welche PHP Klassen es gibt und wo die grob sind. Nichts wofür die API designed ist kann Klassendateien entfernen oder hinzufügen, also macht es keinen immanenten Sinn den per API Call wegzuwerfen.
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.547
    Danke erhalten:
    1.000
    Danke vergeben:
    866
    Hmm... Also ich habe mit Templates immer die Ordner cache und templates_c geleert, wenn es irgendwelche Darstellungs- oder Cache-Probleme gab, die nicht Browser-bezogen waren. Da hat häufig nur der Holzhammer gewirkt, nicht das Skalpell. Bei Themes kenne ich mich noch nicht aus. Ich wollte mit dem Tool die Möglichkeit schaffen, ohne Admin-Zugang alle Caches zu leeren, die einen Zugriff zum Admin Login verhindern könnten oder einen Seitenaufruf durch Kunden behindern können, nachdem man z.B. den Shop durch einen fehlerhaften Overload oder ein nicht mehr kompatibles Modul kaputtgemacht hat. Oder wenn nach einem Update der Cache wie fast immer nicht automatisch geleert werden kann und das zu Darstellungsproblemem führt. Ist das denn der Fall, dass der API Call sowas übernimmt?
     
  6. Wilken (Gambio)

    Wilken (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    7. November 2012
    Beiträge:
    17.775
    Danke erhalten:
    6.757
    Danke vergeben:
    2.046
    Das war früher schon nur begrenzt möglich, weil ein kaputter Textcache Seiten kaputt macht, aber nicht über Dateien löschen/tauschen reparabel ist. Du konntest so eine Submenge von Caches leeren.

    Du hast einen Hammer besessen, aber nie einen Holzhammer.

    Da wir jetzt noch 1-2 Cachelayer mehr haben, hast du jetzt mit dem Ansatz noch einen Gummihammer.

    Tut so nicht. Oder: lässt viele Parameter aus. Noch mehr als einfach Dateien zu löschen. Für deinen angedachten Zweck ist das nicht designed.
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.547
    Danke erhalten:
    1.000
    Danke vergeben:
    866
    Ok schade. Dann nehme ich das mal offline. Und nur aus Neugierde: Weiß man denn, was der Call genau bewirkt?
     
  8. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.023
    Danke erhalten:
    793
    Danke vergeben:
    198
    @L & B folgende Caches werden mit der API erneuert:

    PHP:
            $coo_cache_control->clear_cache();
            
    $coo_cache_control->clear_content_view_cache();
            
    $coo_cache_control->clear_templates_c();
            
    $coo_cache_control->clear_template_cache();
            
    $coo_cache_control->clear_css_cache();
            
    $coo_cache_control->clear_expired_shared_shopping_carts();
            
    $coo_cache_control->remove_reset_token();
            
    $coo_cache_control->rebuild_feature_index();
            
    $coo_cache_control->rebuild_products_categories_index();
            
    $coo_cache_control->rebuild_products_properties_index();
            
    $coo_phrase_cache_builder->build();
            
    $mailTemplatesCacheBuilder->build();
            
    $coo_cache_control->clear_data_cache();