Hi Out there,

 

I am searching for an solution for an issue to prevent Zend_cache to write a
lot of unnecessary Files if someone 

Changes the request in a Loop.

 

Example:

for($id=0;$id<100000;$id++)

{

someGet(‘www.website.com?Unknown_nonesense=’.$id);

}

 

 

As you may already expected I am using the querystring as ID for caching…

 

I am currently thinking about some complicated solutions but maybe somebody
found a simple one *g

 

Some site Problems :

-          No MVC (old Typo3)

-          GET Params can change every day -> list of allowed Params is not
possible

 

 

Thanks guys 

Christoph Hagenbrock 

 

 

 

 

 

Current Implementation:

 

<?php

//AGEBROCK IMPLEMENTIERUNG ZEND CACHE

 

////////////////////-----------------------CACHE start
-------------------------//////////////////////

require_once 'Zend/Cache.php';

 

 

/**

 * Cache Mock Objekt um den cache zu deaktvieren

 * alle dc_Methoden lösen destroyCache aus wenn TRUE

 * 

 * Mock Cache Object to deaktivate Caching

 * all dc_methods will dispatch destroyCache id TRUE

 */

class CacheMock

{

    function start($id)

    {

        return false;

    }

    function end()

    {

        return true;

    }

 

    static function destoryCache()

    {

        global $cache;

        $cache = new CacheMock();

    }

 

    /**

     * duchsucht das $_GET nach Vorkommen im $config Array

     * "*" kann als wildcard genutzt werden.

     *

     * @param Array $config

     */

    static function dc_checkGet($config)

    {

        foreach ($config as $key => $value)

        {

            if(isset($_GET[$key]))

            {

                if($_GET[$key] == $value || $_GET[$key] == '*')

                {

                    self::destoryCache();

                    return;

                }

            }

        }

    }

 

    static function dc_notEmpty($array)

    {

        if(!empty($array))

        {

          self::destoryCache();

        }

    }

 

}

 

 

////////////////////-----------------------CACHE CONFIG
-------------------------//////////////////////

 

$frontendOptions = array(

   'lifetime' => 30, // caching for "x secs"

   'automatic_serialization' => false

   );

 

   $backendOptions = array(

    'cache_dir' => 'fileadmin/zendcache/'

);

$cache = Zend_Cache::factory('Output', 'File', $frontendOptions,
$backendOptions);

 

 

////////////////////----------------------- NO CACHE OPTIONS
-------------------------/////////////////

 

 

 

//liste von ID's die nicht gecached werden sollen

$noGetConfig = array(

    'id' => 363

);

 

 

CacheMock::dc_checkGet($noGetConfig);

CacheMock::dc_notEmpty($_POST);

 

////////////////////----------------------- NO CACHE HACKS ;)
-------------------------/////////////////

 

//tradedoubler correction

if(isset($_GET['tduid']))

{

    $_SERVER['QUERY_STRING'] = 'agent=td';

}

 

$id = md5($_SERVER['QUERY_STRING']);

////////////////////----------------------- ENDE CACHE CONTROL
-------------------------/////////////////

/*

Start Sitebuilding

[CODE START]

if (!($cache->start($id))) {

 

///SITE CREATION ....

 

$cache->end();

}

[CODE ENDE]

*/

?>

 

Reply via email to