Hola, buenas tardes
Tengo una duda con optimizar una página, que muestra n cantidad de productos. La consulta la hago por medio de PHP y luego la imprimo en pantalla usando jQuery Datatables.
Todo funciona bien, pero no sé si tarda mucho por que son muchos artículos (revistas) que se muestran (arriba de 3000 y creciendo), por mi consulta en PHP o por el plugin de jQuery Datatables.
Tengo filtros para que dependiendo del tema, la editorial, el idioma, etc., se muestre menos información, pero cuando el cliente seleccione "Todo", saldrán las 3000+ revistas registradas.
Lo que quiero es que no tarde mucho, ya que se toma al rededor de 27 segundos en procesarla.
Mi consulta en PHP es la siguiente:
Código PHP:
if(isset($_GET['lang'])){
if(!empty($_GET['tema'])){ $argumento01 = ' and rev_tema =' . $_GET['tema']; }
if(!empty($_GET['editorial'])){ $argumento02 = ' and rev_editorial =' . $_GET['editorial']; }
switch($language){
case 'mx': $option = 'Español'; break;
case 'fr': $option = 'Francés'; break;
case 'ale': $option = 'Alemán'; break;
case 'ita': $option = 'Italiano'; break;
case 'eng': $option = 'Inglés'; break;
case 'esp': $option = 'Español'; break;
}
// Mostramos registros de acuerdo a la página actual
$sqlSelectRevistasxIdioma = mysqli_query($conn, "Select id_revista, rev_issn, rev_titulo, rev_tema, rev_subtema, rev_editorial, rev_distribuidor, rev_ejemplares_ano, rev_ejemplares_ano_online, rev_clase_venta, rev_tipo_venta, rev_costo, rev_costo_online, rev_costo_digital, rev_costo_paquete, rev_pais, rev_idioma, rev_fecha_alta, rev_fecha_modificacion, rev_grupo, rev_estatus, rev_imagen, rev_observaciones, rev_idioma_original, rev_idioma_otros, edit_editorial, tem_tema from cat_revistas Left Join cat_temas On(id_tema = rev_tema) Left Join cat_editorial On(id_editorial = rev_editorial) Where rev_idioma = '" . $option . "' and rev_estatus = 1 " . $argumento01 . " " . $argumento02 . " Order by rev_fecha_modificacion DESC");
} else {
$sqlSelectRevistasxIdioma = mysqli_query($conn, "Select id_revista, rev_issn, rev_titulo, rev_tema, rev_subtema, rev_editorial, rev_distribuidor, rev_ejemplares_ano, rev_ejemplares_ano_online, rev_clase_venta, rev_tipo_venta, rev_costo, rev_costo_online, rev_costo_digital, rev_costo_paquete, rev_pais, rev_idioma, rev_fecha_alta, rev_fecha_modificacion, rev_grupo, rev_estatus, rev_imagen, rev_observaciones, rev_idioma_original, rev_idioma_otros, edit_editorial, tem_tema from cat_revistas Left Join cat_temas On(id_tema = rev_tema) Left Join cat_editorial On(id_editorial = rev_editorial) Where rev_estatus = 1 " . $argumento01 . " " . $argumento02 . " Order by rev_fecha_modificacion DESC");
}
y la mostramos en pantalla con jQueryDatables:
Código Javascript
:
Ver original$('#datatable').DataTable({
"language": {
"lengthMenu": "",
"zeroRecords": "No se encontraron registros.",
"info": "Mostrando página _PAGE_ de _PAGES_",
"infoEmpty": "No se encontraron coincidencias.",
"infoFiltered": "(filtrado de _MAX_ del total de los registros)",
"search": "",
"searchPlaceholder": "Busca por título, tema, editorial o cualquier palabra clave...",
"paginate": {
"first": "Inicio",
"last": "Último",
"next": "Siguiente",
"previous": "Anterior"
}
}
});
cuando imprimo en la página, mi tabla hace algunos cálculos para convertir algunos precios en peso mexicano, ya que algunas revistas están en euros y dólar.
Entonces, no se si sea conveniente usar otro tipo de consultas para acelerar la carga o debo modificar mi html... ¿qué me recomiendan?
De antemano, les agradezco sus comentarios.
Saludos!!