Skip to content
This repository was archived by the owner on Nov 9, 2017. It is now read-only.
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions gentle-introduction/it/12-Caching.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -416,8 +416,7 @@ Symfony identifica un partial in cache con un prefisso speciale (`sf_cache_parti
<?php include_partial('user/my_partial', array('user' => $user) ?>

// È identificato nella cache come
@sf_cache_partial?module=user&action=_my_partial
➥ &sf_cache_key=bf41dd9c84d59f3574a5da244626dcc8
@sf_cache_partial?module=user&action=_my_partial&sf_cache_key=bf41dd9c84d59f3574a5da244626dcc8

Teoricamente è possibile rimuovere un partial in cache tramite il metodo `remove()` conoscendo il valore dei parametri hash usati per identificarlo, ma ciò è veramente poco praticabile.
Fortunatamente, aggiungendo un parametro `sf_cache_key` alla chiamata dell'helper `include_partial()`, è possibile identificare il partial in cache con tale chiave.
Expand All @@ -435,8 +434,7 @@ Listato 12-10 - Rimozione di un partial dalla cache
@sf_cache_partial?module=user&action=_my_partial&sf_cache_key=12

// Elimina _my_partial per uno specifico utente in cache con
$cacheManager->remove('@sf_cache_partial?module=user&action=_my_partial
➥ &sf_cache_key='.$user->getId());
$cacheManager->remove('@sf_cache_partial?module=user&action=_my_partial&sf_cache_key='.$user->getId());

Per eliminare dalla cache frammento di template, viene utilizzato lo stesso metodo `remove()`.
La chiave che identifica il frammento nella cache è lo stesso prefisso `sf_cache_partial`, il nome del modulo, quello dell'azione e il parametro `sf_cache_key`.
Expand All @@ -455,8 +453,7 @@ Listato 12-11 - Eliminare frammento dalla cache
@sf_cache_partial?module=user&action=list&sf_cache_key=users

// Eliminato con
$cacheManager->remove('@sf_cache_partial?module=user&action=list
➥ &sf_cache_key=users');
$cacheManager->remove('@sf_cache_partial?module=user&action=list&sf_cache_key=users');

>**SIDEBAR**
>L'eliminazione selettiva della cache potrebbe risultare un'operazione delirante per lo sviluppatore
Expand Down Expand Up @@ -504,8 +501,7 @@ Per rimuovere un profilo utente in cache con id 12 in tutte le lingue, è suffic
Questo funziona anche per i partial:

[php]
$cacheManager->remove('@sf_cache_partial?module=user&action=_my_partial
➥ &sf_cache_key=*'); // Rimozione per tutte le chiavi
$cacheManager->remove('@sf_cache_partial?module=user&action=_my_partial&sf_cache_key=*'); // Rimozione per tutte le chiavi

Il metodo `remove()` accetta due parametri in più, consentendo di definire quali host e header `Vary` si vogliono rimuovere dalla cache.
Questo perché symfony mantiene una versione di cache per ogni host e header `Vary`, quindi due applicazioni che condividano lo stesso codice ma non lo stesso host utilizzerebbero cache diverse.
Expand Down