Drupal gyufák, 1. gyufa

Mostanság derült ki számomra, hogy a Drupal ha bekapcsolják a cache-elését, teljes mértékben figyelmen kívül hagy minden node kezelő hook-ot és egyszerűen kinyomja cache-ből az egész oldalt, ha megtalálja.

Ez jó is lenne, csakhogy én fejlesztgetek egy protected_node nevű modult, amellyel node-okat lehet levédeni egy jelszóval. Na most ha be van kapcsolva a cache-ing, akkor bizony ha valamelyik anonymous már átjutott a jelszóellenőrzésen, akkor a többi anonymousnak nem kell, mert a Drupal lecache-elte a védett lapot.

Ezt a viselkedést sehogy nem lehet megkerülni, ahogy eddig néztem. Nyilván kell a cache-elés, kikapcsolni öngyilkosság. Kitörölni a cache-t minden anonymous látogatás után védett node-ra pont a cache-elés esszenciáját veszi el. Egyelőre nem sok megoldás jut eszembe, de valahogy meg kell kerülni hogy a védett lap cache-elésre kerülhessen.

Ilyen és ehhez hasonló idegesítő vagy zavaró Drupal dolgok fognak ebben a rovatban érkezni tőlem.

Update: Közben azért megleltem a megoldást a problémára, de nem szép megoldás. A vonatkozó Protected Node bugreportban lehet ismerkedni a probléma környezetéről és ott közöltem a megoldást is. 

Lényegében arról van szó, hogy a Drupal kezel egy globális változót, 'conf' néven, ami történetesen a configurációs beállításokat hordozza. Természetesen nincs dokumentálva (AFAIK) ez a core kódon kívül. Tehát a cache kezelés egy-egy kérésre kikapcsolható, ha a kódban beállítjuk true-ra a $GLOBALS['conf']['cache'] változót.
 

 

Tanulság: Minden megoldható ha van egy fejszéd és egy jó erős nagyítód.