Almacenarlo en sesiones probablemente no es la mejor idea, cuando agrega datos a una sesión (de manera predeterminada) los datos se escriben en un archivo en el sistema operativo, generalmente en/tmp/lo que significa que va a estar golpeando el disco bastante y almacenando la misma cantidad de datos.
Si los datos no es usuario específico entonces se podría almacenar en el disco o en la memoria - (ver: php.net/apc)
Si los datos son usuario específico, recomiendo almacenarla en un sistema distribuido caché, tales como Memcached (memcached.org) PHP tiene una biblioteca puede activar (php.net/memcached)
(por el usuario específico me refiero a los datos como a las transacciones de los usuarios, artículos, carrito de compras, etc.)
La lógica es básicamente la misma para cualquier método que elija:
Memcached, el usuario ejemplo datos específicos:
<?php
$memcached = new Memcached();
$data = $memcached->get('shopping-cart_' . $user_id);
if (!$data) {
$sql = $db->query("..");
$data = array();
while($row = $query->fetch_assoc()) {
$data[] = $row;
}
$memcached->set('shopping-cart_' . $user_id, $data);
}
?>
<table>
<?php
foreach ($data as $item) {
echo '<tr><td>' . $item['name'] .' </td></tr>';
}
?>
</table>
datos globales (no usuario específico)
<?php
$cache_file = '/cached/pricing-structure.something';
if (file_exists($cache_file)) {
echo $cache_file;
} else {
// heavy query here
$h = fopen('/cached/pricing-structure.something', 'w+');
fwrite($h, $data_from_query);
fclose($h);
}
¿Qué ha hecho para identificar dónde está el cuello de botella? Cualquier perfil? –
¿Por qué no empezaste tratando de hacer ** tus consultas más rápido ** para no molestarte con el almacenamiento en caché? – zerkms
@ Louis-Philippe Huberdeau ¿Qué herramienta recomendaría para crear perfiles? – santa