Ako uplne vypnut/zakazat cache

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
buksy
Člen | 22
+
0
-

Ahojte, ako mozem kompletne zakazat cache?

Mam problem, ze ked nieco upravim v php (v presenteri, alebo v library), na vystupe sa mi to zobrazi az po 3–5 refreshi stranky. Som si isty ze to nesposobuje cache browsera. Vacsinou ked zmazem priecinok temp/cache/_nette.FileTemplate alebo _nette.RobotLoader tak az vtedy mi zobrazi spravne stranku.

Snazil som sa nastavit si v config.neon NullStorage, ale vobec to nepomoholo

services:
  cacheStorage:
    class: Nette\Caching\Storages\DevNullStorage

snazil som sa tam nastavit aj templateCacheStorage, ale nette hlasi problem ked nastavim obidve moznosti naraz v config.neon

services:
  templateCacheStorage:
    class: Nette\Caching\Storages\DevNullStorage

Mohli by ste mi poradit co vyskusat? Zacina ma to celkom iritovat ze pri vyvoji musim po kazdej zmene mazat aj obsah cache priecinku. Alebo v com inom by mohla byt chyba?

PS: v bootstrap mam setDebugMode(true)

Filip Procházka
Moderator | 4668
+
0
-

Tohle by se dít nemělo, jakou máš verzi Nette? Ukážeš nám svůj bootstrap.php? V debug módu se musí šablony invalidovat automaticky samy.

buksy
Člen | 22
+
0
-

No tiez si myslim ze by sa to nemalo stat, asi tam mam nieco velmi zle :)

Bootsrap.php je v podstate „defaultny“

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Configurator;

$configurator->setDebugMode(TRUE);  // debug mode MUST NOT be enabled on production server
$configurator->enableDebugger(__DIR__ . '/../log');

$configurator->setTempDirectory(__DIR__ . '/../temp');

$configurator->createRobotLoader()
	->addDirectory(__DIR__)
	->addDirectory(__DIR__ . '/../vendor/others')
	->register();

$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');

$container = $configurator->createContainer();

return $container;

prikladam aj config.neon (config.local.neon je prazdny)

parameters:

php:
  date.timezone: Europe/Prague
  # zlib.output_compression: yes

nette:
  application:
    errorPresenter: Error
    mapping:
      *: App\*Module\Presenters\*Presenter

  session:
    expiration: 14 days

  database:
    default:
      dsn: "mysql:unix_socket=/tmp/mysql51.sock;dbname=dbname"
      user: "user"
      password: "pass"
      options: null
      debugger: true
      explain: true

  container:
    debugger: true

services:
  - App\Model\UserManager
  - App\RouterFactory
  router: @App\RouterFactory::createRouter
  database: @nette.database.default

  hydro:
    class: App\Model\HydroManager
    arguments: [@database]

  # pre debug
  cacheStorage:
    class: Nette\Caching\Storages\DevNullStorage

  #templateCacheStorage:
  #  class: Nette\Caching\Storages\DevNullStorage

Nette je vo verzii 2.1.2 (2014–03–17), versionId: 20102 podla loader.php

sKopheK
Člen | 207
+
0
-

Po upgradu na verzi 2.2, kde se oddělilo Latte, mi nefunguje kompletní vypnutí cache a když chci měnit vlastní makra pro Latte, musím cache vždy ručně mazat, aby se projevily změny. U šablon je to bez problémů.

buksy
Člen | 22
+
0
-

Fakt nikto nema ziaden tip co by som mohol vyskusat? Este aj ked v presenteri mam nejaku chybu, napr:

Nette\InvalidArgumentException
Component name must be non-empty alphanumeric string, ‚fitness-arg‘ given.

tak aj ked to opravim, ani po piatom refreshi ta chyba nezmizne a call-stack mi zobrazuje chybu na starom kode ktory uz neexistuje.

PS: Teraz som si vsimol, ze ked stale refreshujem stranku, tak v priemere po 25 sekundach sa mi zobrazi skutocny vysledok, ako keby 25sekund trvalo nette kym si uvedomi ze subor bol zmeneny a nema nacitavat cache. Podla coho si nette overuje ci sa subor zmenil? Uklada si datum a cas poslednej, alebo velkost suboru? Je mozne ze by ten datum poslednej zmeny obsahoval len hodinu a minutu a neobsahoval sekundy? Mohlo by to sposobovat problem? Pripadne ak by ftp manager a php mali medzi sebou nejaky casovy posun? (i ked to je nepravdepodobne)