Ich habe eine komplexe Installation von Joomla 3.4.4 mit jSeblod und vielen anderen Erweiterungen. Wir planen, Varnish4 vor dem Webserver zu verwenden und müssen daher die richtigen Cache-Control-Header aktivieren.
Aber ich kann das Caching nicht aktivieren. Folgendes habe ich versucht:
1)
configuration.php
public $caching = '1';
public $cache_handler = 'file';
public $cachetime = '30';
2) Administrator-> Erweiterungen-> Plugins-> Seiten-Caching ist aktiviert
Im Plugin ist das Browser-Caching aktiviert
3) Bei einem Debugger stoppt der Debugger in jedem Plugin, das ich versuche, aber nicht im Cache-Plugin
4) Unter Administrator-> Erweiterungen-> Verwalten finde ich das installierte Cache-Plugin
5) Unter Administrator-> Erweiterungen-> Erkennen wird es jetzt gefunden.
6) Auf meiner eigenen Live-Website erhalte ich die gleichen Ergebnisse, jedoch lautet der Cache-Header "Cache-Control: kein Cache" anstelle von "Cache-Control: kein Store, kein Cache, muss erneut validiert werden, nach dem Check = 0, Vorprüfung = 0 "
7) Ich habe ein Plugin erstellt, das den Cache kurz vor dem Senden der Antwort einschaltet:
class plgSystemGtnocachies extends JPlugin
{
function plgSystemGtnocachies( &$subject, $config )
{
parent::__construct( $subject, $config );
}
function __destruct()
{
if (!headers_sent())
{
$this->setCacheHeaders();
}
}
public function onAfterRender()
{
JApplicationWeb::allowCache( true );
$this->setCacheHeaders();
}
private function setCacheHeaders()
{
JApplicationWeb::setHeader( 'Cache-Control', 'public, max-age=10800', true );
JApplicationWeb::setHeader( 'Vary', 'Cookie', true );
JApplicationWeb::setHeader( 'Pragma', '', true );
}
}
Was ich jedoch finde, ist das, wenn der Funktionsaufruf zu zurückkehrt
class JEventDispatcher extends JObject
{
public function trigger($event, $args = array())
{
$result = array();
/*
* If no arguments were passed, we still need to pass an empty array to
* the call_user_func_array function.
*/
$args = (array) $args;
$event = strtolower($event);
// Check if any plugins are attached to the event.
if (!isset($this->_methods[$event]) || empty($this->_methods[$event]))
{
// No Plugins Associated To Event!
return $result;
}
// Loop through all plugins having a method matching our event
foreach ($this->_methods[$event] as $key)
{
// Check if the plugin is present.
if (!isset($this->_observers[$key]))
{
continue;
}
// Fire the event for an object based observer.
if (is_object($this->_observers[$key]))
{
$args['event'] = $event;
$value = $this->_observers[$key]->update($args);
------->
}
// Fire the event for a function based observer.
elseif (is_array($this->_observers[$key]))
{
$value = call_user_func_array($this->_observers[$key]['handler'], $args);
}
if (isset($value))
{
$result[] = $value;
}
}
return $result;
}
JApplicationWeb::getInstance->response->cacheable
ist wieder falsch.
Irgendeine Idee, was hier los ist?