# HTTP Frontend Cache in Plugins deaktivieren

**URL:** <https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [21. März 2014 um 10:19 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224 "2014-03-21T10:19:06Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![ShopFreelancer](https://avatars.discourse-cdn.com/v4/letter/s/fbc32d/32.png) [@ShopFreelancer](https://forum.shopware.com/u/ShopFreelancer)\
**Post date:** [21. März 2014 um 10:19 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/1 "2014-03-21T10:19:06Z")

</div>

Eine längere Recherche und den Austausch mit anderen Entwicklern habe ich schon hinter mir. Sieht aus, als hätten die meisten den HTTP-Cache bisher schlicht nicht genutzt. Ab Shopware 4.2.x ist er nun da und gleich ereilt mich folgende Problematik: Plugins funktionieren nicht mehr wie gewünscht. Eine Standardsituation von Plugins ist etwa auf der Detailseite Post Dispatch Daten abzufragen und zurückzugeben. Wenn ich hier noch zusätzliche Abfragen einbaue - im konkreten Fall prüfe ich die Uhrzeit - werden diese nicht angezeigt. Konkrete Fragen: 1. Was genau ist in den Backend-Konfigurationen mit „NoCache-Controller / Tags“ gemeint? Was wäre denn frontend/detail/price? „Price“ ist ja keine PHP-seitige Action Methode (was ich erstmal unter einem Controller in MVC verstehen würde). [http://wiki.shopware.de/Shopware-4-Http … l\_817.html](http://wiki.shopware.de/Shopware-4-Http-Proxy-Cache%5C_detail%5C_817.html) 2. Wie kann ich meine Plugins non-cachable machen? Mit dem Pseudocode unter [http://wiki.shopware.de/Shopware-4.1-Up … erse-Proxy](http://wiki.shopware.de/Shopware-4.1-Upgrade-Guide-fuer-Entwickler%5C_detail%5C_1297.html#HTTP-Reverse-Proxy) kam ich zumindest nicht weiter (am Rande: Pseudocode, weil da einiges nicht funktionieren würde, es gibt an der Stelle kein $this Objekt und controllerName wäre detail nicht Detail). Ok, ich habe mich meine Methode im Event ‚Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Detail‘ angelegt. Ausgeführt wird alles wie auch in allen Shopwareversionen bisher, nur landen meine Variablen im Cache. Eigentlich sollte das hier die Lösung sein, damit passiert aber nichts: $response = $args-\>getSubject()-\>Response(); $response = setHeader(‚Cache-Control‘, ‚private‘); Anyone? Besten Dank!

---

<div class="post-metadata">

**Author:** ![nexxoo](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nexxoo](https://forum.shopware.com/u/nexxoo)\
**Post date:** [5. Juni 2014 um 15:50 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/2 "2014-06-05T15:50:00Z")

</div>

Wir stehen genau vor dem gleichen Problem hat hier schon jemand eine Abhilfe? Gruß Florian

---

<div class="post-metadata">

**Author:** ![Thomas](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/thomas/32/8167_2.png) [@Thomas](https://forum.shopware.com/u/Thomas)\
**Post date:** [5. Juni 2014 um 22:44 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/3 "2014-06-05T22:44:54Z")

</div>

Könnt Ihr beiden mal ein rudimentäres Plugin hier reinstellen? Ich würde mir das Problem gerne einmal anschauen.

---

<div class="post-metadata">

**Author:** ![nexxoo](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nexxoo](https://forum.shopware.com/u/nexxoo)\
**Post date:** [6. Juni 2014 um 08:12 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/4 "2014-06-06T08:12:43Z")

</div>

[code] function onPostDispatch(Enlight\_Event\_EventArgs $args) { $view = $args-\>getSubject()-\>View(); $request = $args-\>getSubject()-\>Request(); if($request-\>getModuleName()!=‘frontend’){ return; // nur im Frontend ausführen } $preise\_ausblenden=false; $admin = Shopware()-\>Modules()-\>Admin(); $sUserData = $admin-\>sGetUserData(); $customergroup = $sUserData[‘additional’][‘user’][‘customergroup’]; // wenn nicht eingeloggt preise ausblenden if(!$admin-\>sCheckUser()) $preise\_ausblenden=true; // Kunde ist kein händler also Shopkunde dann Preise ausblenden iF( $customergroup == “EK” ){ $preise\_ausblenden=true; } if($preise\_ausblenden){ // Listenansicht $view-\>extendsBlock(‘frontend\_listing\_box\_article\_price’, ’

'); // haupt listenansicht $view-\>extendsBlock(‘frontend\_listing\_box\_similar\_price’, ’

'); // listenansicht zwei $view-\>extendsBlock(‘frontend\_listing\_box\_article\_actions\_buy\_now’, ‘’); // jetzt bestellen in listenansicht // detailseite $view-\>extendsBlock(‘frontend\_detail\_data\_price’, ‘’); $view-\>extendsBlock(‘frontend\_detail\_data\_pseudo\_price’, ‘’); $view-\>extendsBlock(‘frontend\_detail\_data\_price\_configurator’, ‘’); $view-\>extendsBlock(‘frontend\_detail\_data\_price\_info’, ‘’); }else{ } [/code] Dadurch das er aber alles irgendwie cached seit 4.2.1. werden auch nicht eingeloggten Nutzern die Preise angezeigt sobald man suich parallel mit einem anderen Browser als Händler Kunde einloggt. Das Caching zu deaktivieren wie unter [http://wiki.shopware.de/Shopware-4.1-Up … erse-Proxy](http://wiki.shopware.de/Shopware-4.1-Upgrade-Guide-fuer-Entwickler%5C_detail%5C_1297.html#HTTP-Reverse-Proxy) beschrieben klappt irgendwie nicht… ich blicke ehrlich gesagt momentan auch nicht durch welches Cachign greift. HTTP-Cache (unter Einstellungen Cache ist deaktiviert) oder Grungeinstelllungen System Frontend Cache…

---

<div class="post-metadata">

**Author:** ![nexxoo](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nexxoo](https://forum.shopware.com/u/nexxoo)\
**Post date:** [6. Juni 2014 um 09:06 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/5 "2014-06-06T09:06:11Z")

</div>

Kann sich Shopware hierzu vielleicht einmal äußern, den Zugriffszahlen des Beitrags zu Urteiln haben einige dieses Problem… HTTP Cache ist deaktiviert trotzdem wird irgendwie gecached (Serverseitig) Den Cach zu deaktivieren über `$view-\>setCaching(false);` oder `$request-\>setHeader('Cache-Control', 'private');` oder `// Alternativ $plugin = Shopware()-\>Models()-\>getRepository('Shopware\Models\Plugin\Plugin')-\>findOneBy(array('name' =\> 'HttpCache')); $plugin-\>setActive(false); Shopware()-\>Models()-\>flush(false); ` klappt einfach nicht… brauchen Dringend Hilfe. Gruß Florian

---

<div class="post-metadata">

**Author:** ![Thomas](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/thomas/32/8167_2.png) [@Thomas](https://forum.shopware.com/u/Thomas)\
**Post date:** [6. Juni 2014 um 10:42 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/6 "2014-06-06T10:42:18Z")

</div>

Bitte die Bootstrap.php einmal soweit vollständig rein schreiben damit man dies testen kann. Des Weiteren wäre die verwendete Shopware Version noch interessant. Gruß

---

<div class="post-metadata">

**Author:** ![nexxoo](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nexxoo](https://forum.shopware.com/u/nexxoo)\
**Post date:** [6. Juni 2014 um 13:59 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/7 "2014-06-06T13:59:44Z")

</div>

Bootstrap ist der standard Shopware ist Version 4.2.1. [code]\<?php /\*\*

- Shopware 4
- Copyright © shopware AG
- 
- According to our dual licensing model, this program can be used either
- under the terms of the GNU Affero General Public License, version 3,
- or under a proprietary license.
- 
- The texts of the GNU Affero General Public License with an additional
- permission and of our proprietary license can be found at and
- in the LICENSE file you have received along with this program.
- 
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
- 
- „Shopware“ is a registered trademark of shopware AG.
- The licensing of the program under the AGPLv3 does not imply a
- trademark license. Therefore any rights, title and interest in
- our trademarks remain entirely with us.  
\*/

/\*\*

- Shopware Application

- 
- @category Shopware

- @package Shopware\Bootstrap

- @copyright Copyright © shopware AG ([http://www.shopware.de](http://www.shopware.de))  
_/  
class Shopware\_Bootstrap extends Enlight\_Bootstrap  
{  
/_\*

---

<div class="post-metadata">

**Author:** ![Thomas](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/thomas/32/8167_2.png) [@Thomas](https://forum.shopware.com/u/Thomas)\
**Post date:** [8. Juni 2014 um 12:51 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/8 "2014-06-08T12:51:17Z")

</div>

ich meinte natürlich die Bootstrap von deinem Plugin 🙂

---

<div class="post-metadata">

**Author:** ![nexxoo](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nexxoo](https://forum.shopware.com/u/nexxoo)\
**Post date:** [10. Juni 2014 um 09:13 UTC](https://forum.shopware.com/t/http-frontend-cache-in-plugins-deaktivieren/19224/9 "2014-06-10T09:13:44Z")

</div>

Hier der vollständige Code Wunschziel ist es die Preise nur Eingeloggten Händlern anzuzeigen, nicht aber Shopkunden ohne login. Und das gleichzeitige Auslbenden des Warenkorbs für nicht eingeloggte Kunden. Ich habe immernoch die Vermutung das an irgend einer Stelle gecached wird da die ganzen modifizierungen mal greifen und mal nicht. [code] class Shopware\_Plugins\_Frontend\_NeHaendlerPreise\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { public function install(){ $event = $this-\>subscribeEvent( ‘Enlight\_Controller\_Action\_PostDispatch’, ‘onPostDispatch’, 0 ); return true; } function onPostDispatch(Enlight\_Event\_EventArgs $args) { $view = $args-\>getSubject()-\>View(); $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Request(); if($request-\>getModuleName()!=‘frontend’){ return; // nur im Frontend ausführen } //$request-\>setHeader(‘Cache-Control’, ‘private’); if($requestnicht im Kundenbereich ausführen } $view-\>setCaching(false); $preise\_ausblenden=false; $admin = Shopware()-\>Modules()-\>Admin(); $sUserData = $admin-\>sGetUserData(); $customergroup = $sUserData[‘additional’][‘user’][‘customergroup’]; // wenn nicht eingeloggt preise ausblenden if(!$admin-\>sCheckUser()){ $preise\_ausblenden=true; } // Kunde ist kein händler also Shopkunde dann alles ausblenden iF( $customergroup == “EK” ){ $preise\_ausblenden=true; } if($preise\_ausblenden){ // Listenansicht $view-\>extendsBlock(‘frontend\_listing\_box\_article\_price’, ’

'); // haupt listenansicht $view-\>extendsBlock(‘frontend\_listing\_box\_similar\_price’, ’

'); // listenansicht zwei $view-\>extendsBlock(‘frontend\_listing\_box\_article\_actions\_buy\_now’, ‘’); // jetzt bestellen in listenansicht // detailseite $view-\>extendsBlock(‘frontend\_detail\_data\_price’, ‘’); $view-\>extendsBlock(‘frontend\_detail\_data\_pseudo\_price’, ‘’); $view-\>extendsBlock(‘frontend\_detail\_data\_price\_configurator’, ‘’); $view-\>extendsBlock(‘frontend\_detail\_data\_price\_info’, ‘’); // UVP ausblenden $view-\>extendsBlock(‘frontend\_detail\_data\_ordernumber’, ‘’); } if($request-\>getControllerName() == “listing”){ $admin = Shopware()-\>Modules()-\>Admin(); $sUserData = $admin-\>sGetUserData(); } // Alternativ $plugin = Shopware()-\>Models()-\>getRepository(‘Shopware\Models\Plugin\Plugin’)-\>findOneBy(array(‘name’ =\> ‘HttpCache’)); $plugin-\>setActive(false); Shopware()-\>Models()-\>flush(false); } public function getInfo() { $version=“1.0.1”; return array( ‘label’ =\> ‘XXX - Händler Preise’.$version, ‘autor’ =\> ‘XXX XXX’, ‘version’ =\> $version, ‘copyright’ =\> ‘Copyright © 2014, XXXX’, ‘source’ =\> “Local”, ‘description’ =\> ‘Wenn dieses Plugin Aktiv ist weden nur der Kundengruppe Händler Preise, Lagerbestand und Warenkorb angezeigt. Reine Shopkunden sehen nur die Artikel ohne Preise und ohne Lagerbestand. Auch Sieht nur der Shopkunde die Widerrufsbelehrungen nicht aber der Händler.’, ‘license’ =\> ‘Lizenz’, ‘support’ =\> ‘XXX’, ‘link’ =\> ‘XXXX’ ); } } ?\>[/code]
