Der Ganzseiten-Cache in unseren Cluster-Benutzern kann Konten anderer Benutzer anzeigen

7

Wenn ich den Ganzseiten-Cache in unserem Cluster aktiviere, können Benutzer die Konten anderer Benutzer sehen.

Wir verwenden jetzt REDIS für Objekte und FPC (separate Instanzen). Ich wechsle Sitzungen zur Datenbank. Wir haben 4 Webköpfe und einen Datenbankserver. Magento Enterprise 1.13.1 SID im Frontend verwenden ist auf NEIN eingestellt. HINWEIS: Ich verwende zwei verschiedene REDIS-Instanzen an zwei verschiedenen Ports. Ich habe die URL und die Portnummer ausgegeben. Das Problem liegt NICHT bei REDIS, da wir das gleiche Problem beim Speichern über DATEIEN und mit einem anderen Thema hatten

Ich habe bestätigt, dass ich Datenverkehr zur FPC REDIS-Instanz habe (wir verwenden Object Rocket).

   <session_save><![CDATA[db]]></session_save>
    <cache>
       <backend><![CDATA[Mage_Cache_Backend_Redis]]></backend>
        <backend_options>
        <server><![CDATA[xxxxxxxxxxxxxxxxxx.rackspaceclouddb.com]]></server>
       <port><![CDATA[xxx12]]></port>
        <database><![CDATA[0]]></database>
        <password>LikeIWillPublishthePassword</password>
       <force_standalone><![CDATA[0]]></force_standalone>
       <automatic_cleaning_factor><![CDATA[0]]></automatic_cleaning_factor> 
      <compress_data><![CDATA[1]]></compress_data>
      <compress_tags><![CDATA[1]]></compress_tags> 
      <compress_threshold><![CDATA[20480]]></compress_threshold>
      <compression_lib><![CDATA[gzip]]></compression_lib>
     <lifetimelimit><![CDATA[43200]]></lifetimelimit>
    </backend_options>
    </cache>

Hier ist das hinzugefügte XML für die Enterprise-FPC

<config>
    <global>
        <cache>
            <request_processors>
                <ee>Enterprise_PageCache_Model_Processor</ee>
            </request_processors>
            <frontend_options>
                <slab_size>1040000</slab_size>
            </frontend_options>
        </cache>
        <full_page_cache>
            <backend>Mage_Cache_Backend_Redis</backend>
            <backend_options>
            <server>7xxxxxxxxxxxxxxxxublb.rackspaceclouddb.com</server>  
              <port>xxxxxxxx31</port>
              <persistent></persistent>                 
           <database>0</database>  
               <password>SomePassword</password>
              <force_standalone>0</force_standalone>
              <connect_retries>1</connect_retries>    
              <lifetimelimit>57600</lifetimelimit> 
              <compress_data>0</compress_data>
            </backend_options>
         </full_page_cache>
    </global>
</config>

(Ich habe das Inchoo-Beispiel für FPC verwendet)

Bitte lassen Sie mich wissen, wenn ich etwas vergessen habe. Das einzige, woran ich denken könnte, ist, wenn die Webköpfe nicht alle relevanten XML-Dateien erhalten haben, nachdem wir die neue Unternehmensdatei veröffentlicht haben

BEARBEITEN VOM KUNDEN:

Ich habe es gerade erst auf der Startseite bemerkt, aber ich konnte tatsächlich auf / customer / account klicken und die letzten Bestellungen der anderen Person sehen

Brentwpeterson
quelle
1
Welche Art von Inhalten sehen sie? Könnten Sie auch den Inhalt Ihrer cache.xml-Datei veröffentlichen? Es hört sich so an, als ob der Cache-Schlüssel, der für einzelne Containerblöcke generiert wird, nicht eindeutig genug ist.
Kevin Schroeder
Wir haben Benutzer, die Konten anderer Benutzer sehen. Alle meine Cache-XML-Dateien werden veröffentlicht. Vielleicht fehlt mir eine, die Sie gerne sehen würden?
Brentwpeterson
Was ist eine Beispiel-URL und welchen Inhalt sehen sie?
Kevin Schroeder
1
Korrigieren Sie mich, wenn ich falsch liege, aber die Kundenkontoseite nicht standardmäßig von der FPC ausgeschlossen ist. Auch HTTPS? Sind Sie sicher, dass FPC in keiner Weise modifiziert ist?
Lord Skeletor
Dies ist eine Kernversion von Magento - Wir haben ein neues Thema installiert, aber das gleiche Problem trat beim alten Thema auf. Ich habe gerade ein Ticket mit Magento
Brentwpeterson

Antworten:

2

Der Magento-Support fand die Antwort: das Problem

CE-Themen bei EE-Installationen und alle bezogen sich auf Vorlagen. Der CE-Block hat keinen FPC-Platzhalter, daher wird er einmal zwischengespeichert und vor anderen Kunden freigegeben.

Der Code sollte in einen unabhängigen Block verschoben und als "Willkommen" bezeichnet werden.

Gemäß der Konfiguration des Ganzseiten-Cache-Blocks hat "Willkommen" einen Platzhalter, der diesen Block nicht zwischenspeichert, so dass dieser Block pro Kunde eindeutig ist.

app / code / core / Enterprise / PageCache / etc / cache.xml (Zeilen 62-67)

<welcome_message>
    <block>page/html_welcome</block>
    <placeholder>WELCOME</placeholder>
    <container>Enterprise_PageCache_Model_Container_Welcome</container>
    <cache_lifetime>86400</cache_lifetime>
</welcome_message>

Zum Beispiel in der Originalvorlage:

App / Design / Frontend / Unternehmen / Standard / Vorlage / Seite / html / header.phtml (Zeilen 31-35)

<div class="header-panel">
    <div class="switches"><?php echo $this->getChildHtml('switches') ?></div>
    <p class="welcome-msg"><?php echo $this->getChildHtml('welcome') ?></p>
    <?php echo $this->getChildHtml('accountLinks') ?>
</div>

dh der Begrüßungsblock wird als untergeordnetes Element des Headerblocks verwendet, da app / design / frontend / unternehmen / default / layout / page.xml (Zeilen 71-88)

 <block type="page/html_header" name="header" as="header">
 <block type="page/template_links" name="account.links" as="accountLinks"/>
                ...
 <block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
  <label>Page Header</label>
  <action method="setElementClass"><value>top-container</value></action>
  </block>
  <block type="page/html_welcome" name="welcome" as="welcome"/>
    </block>
Brentwpeterson
quelle
1

Dies kann eine beliebige Anzahl von Dingen sein, aber hier ist eine Liste von Möglichkeiten, die ausgeschlossen werden können:

  1. Stellen Sie sicher, dass der Enterprise_PageCache-Konfiguration wie folgt benutzerdefinierte Blöcke hinzugefügt werden:

    <!-- My_Module/etc/cache.xml -->  
    <config>  
        <placeholders>  
            <cart_sidebar>  
                <block>custom_module/cart_sidebar</block>
                <placeholder>CART_SIDEBAR</placeholder>
                <container>Enterprise_PageCache_Model_Container_Sidebar_Cart</container>
                <cache_lifetime>86400</cache_lifetime>
            </cart_sidebar>
        </placeholders>
    </config>  
    
  2. Stellen Sie sicher, dass keine Dienste von Drittanbietern HTML zwischenspeichern (Dienste wie Squixa beschleunigen Websites manchmal auf diese Weise).

  3. Versuchen Sie, APC oder Zend OPcache zu deaktivieren, wenn einer aktiviert ist (hatte kürzlich einige Probleme damit)
jharrison.au
quelle
Beides gibt keine Antwort. Sie können sehen, dass ich unterschiedliche URLs und Ports für REDIS habe und Ihre Beispiele REDIS nicht enthalten. Ihr CM_CACHE ist eine alte Version des XML. In Ihrem FPC-Beispiel wird REDIS nicht verwendet.
Brentwpeterson
Ja, du hast recht, ich habe deine Konfiguration falsch verstanden. Meine Konfiguration führt jedoch zur Verwendung von Redis, da das Backend überschrieben wird local.xml. Haben Sie vom Enterprise-Support etwas gehört?
jharrison.au
Magento führt eine SSH-Bildschirmfreigabesitzung durch, um das Problem zu diagnostizieren. Ich werde dort Ergebnisse veröffentlichen, wenn sie fertig sind
brentwpeterson