2010-09-17 3 views
1

Je souhaite ajouter des informations statiques associées aux clés de chaîne à toutes mes pages. Les pages PHP individuelles utilisent certaines de ces informations filtrées par une chaîne de requête. Quelle est la meilleure approche pour ajouter cette information? Générer un fichier PHP de 100K (ou plus si plus d'infos est nécessaire plus tard) avec un tableau associé ou ajouter une autre table DB avec cette info et cette requête?Quel est le meilleur? Un appel de base de données supplémentaire ou un fichier PHP généré?

La première solution consiste à charger le fichier 100K chaque fois même si je n'utilise qu'une partie des informations de la page en cours. La seconde d'autre part ajoute un appel de base de données supplémentaire au rendu de chaque page.

Quel est le moins coûteux s'il y a un grand nombre de pages? Charger un fichier PHP ou effectuer un appel db supplémentaire?

+0

son facile à trouver, faire une recherche :) mesurer la page de temps génère avec db et avec le fichier ... je voudrais aller avec DB tho –

Répondre

2

À moins qu'il ne soit vraiment démontré qu'il s'agit d'un goulot d'étranglement (qu'il s'agisse du fichier php ou de l'interrogation de la base de données), vous devez choisir l'option la mieux conservable. Je pense que c'est la deuxième option. Stockez-le dans une base de données.

0

Le stocker dans une base de données est un bien meilleur plan. Avec la base de données, vous pouvez fournir de meilleures contraintes de données, plus facilement la référence croisée avec d'autres données et créer des relations solides. Vous pouvez ou ne pouvez pas avoir besoin de cela pour l'instant, mais c'est une solution beaucoup plus flexible à la fin.

À quoi servent les données? Je me demande si les données dont vous avez besoin pourraient être stockées dans une variable/cookie de session une fois qu'elles sont extraites de la base de données, ce qui vous permettrait de ne pas interroger la base de données sur le rendu de chaque page.

0

Si vous deviez tirer parti d'un fichier PHP, l'utilisation d'APC ou d'un autre cache d'opcode réduirait les problèmes de performances car vos fichiers PHP ne seront chargés qu'à chaque fois que le fichier change.

Cependant, comme d'autres l'ont noté, une base de données est le meilleur endroit pour stocker ce genre de choses car il est beaucoup plus facile à entretenir (cela devrait être votre priorité pour commencer). Après avoir assuré la facilité de maintenance et une application fonctionnelle, si vous avez besoin d'une amélioration des performances, la pratique généralement acceptée serait de mettre en mémoire cache ces données statiques dans un magasin clé/valeur en mémoire tel que memcached. Cela vous donnera un accès rapide à vos valeurs statiques (pour la plupart des demandes).

-2

Je n'appellerais pas cette information "statique".
Pour moi, c'est juste un appel de routine pour obtenir des informations de dôme de la base de données, parmi d'autres appels faits pour assembler la page entière. Qu'est-ce qui me manque?

Et je suis d'accord avec Dennis, toutes les optimisations devraient être basées sur les besoins réels et le profilage. Sinon, son effet pourrait être opposé.

Si vous souhaitez utiliser une mise en cache, envisagez d'implémenter le GET conditionnel pour toute la page.

Questions connexes