Je veux mettre en cache des données sur des demandes PHP plutôt que de la tirer de la base de données pendant chaque appel. Les données s'appliquent universellement indépendamment de l'utilisateur / de la session. Quelle est la méthode la plus légère consistant à y parvenir? Je ne peux pas garantir l'accès à l'écriture au lecteur ou besoin d'APC. Y a-t-il un moyen de faire la réalisation de cela avec Vanilla PHP? Merci! P>
5 Réponses :
Je ne pense pas que ce soit possible. Vous pouvez toujours précharger les données simplement une fois dans une session PHP qui réduira définitivement le nombre de requêtes de base de données. P>
Il y a plusieurs façons de «mettre en cache», une base de données peut être l'une d'entre elles. Une autre option que vous pouvez essayer est des fichiers XML, mais tout dépend de votre problème spécifique. P>
Il y a 3 «façons» qui me viennent à l'esprit lorsque vous le demandez, mais avant de les résumer, laissez-moi dire que PHP n'est pas conçu pour faire ce que vous voulez. Il n'y a pas de système de mise en cache «universel» pour les données interrogées (ou accumulées). Cependant, vous pouvez faire plusieurs choses pour accélérer vos charges de page et vos demandes de données: p>
Les premières sessions Comme vous pouvez voir toutes ces méthodes ont leurs propres avantages et inconvénients, mais vous pouvez les utiliser tous comme vous le souhaitez. Une seule note est que cela prend du temps pour charger des données en cache à partir de fichier ou de session, vous devriez donc vérifier si la mise en cache accélère réellement les demandes! P>
Merci pour la réponse complète. Query Caching semble être ma meilleure option car la base de données MySQL est le seul système que je peux compter sur.
Pour avoir un système de système / application typique, vous avez besoin d'un accès en écriture de système de fichiers ou d'avoir quelque chose comme APC disponible. P>
Le seul autre moyen de mettre les données de cache est de la définir à la session pour chaque utilisateur, où si la clé de session "My-cache" n'existe pas, obtenez de la base de données et définie à la session. Tout comme avec une autre méthode de mise en cache, vous devrez également réfléchir à désétablir le cache lorsque les données sont mises à jour, etc. P>
Ce n'est pas du tout idéal pour avoir des données d'application mis en cache du côté client, mais si vous avez besoin de cache où les options de mise en cache ne sont pas disponibles, c'est votre seule option. P>
Si vous souhaitez que votre site Web fonctionne bien, vous devez toujours essayer d'installer APC. APC est principalement / aussi un opcode-cache qui accélère énormément votre site Web, mais ci-dessous essaye toujours de vous donner quelques alternatives rapides. P>
Redis est une source ouverte, avancée magasin de la valeur clé. Il est souvent référé à un serveur de structure de données depuis Les clés peuvent contenir des cordes, des hachages, Listes, ensembles et ensembles triés. P> blockQuote>
redistogo.com offre gratuitement Redis Server (Fast) avec 5 Mo de mémoire. Vous pouvez simplement utiliser simplement une simple vanille redis-client comme par exemple prédis pour se connecter au serveur ReDIS et mettre en cache vos données. P>
/ dev / shm h2>
Y a-t-il un moyen de faire fonctionner cela avec vanille php? Merci! P> blockQquote>
Vous pouvez essayer d'utiliser cache_lite (bibliothèque de vanille) et essayez écrire à / dev / shm (mémoire partagée), mais vous avez besoin de Linux os pour cela. Introduction page indique la base. Si possible, vous devez utiliser
cache_dir => '/ dev / shm' code> p>
xxx pré> Vous pouvez toujours utiliser ce paquet pour écrire sur le disque (lent par rapport à la mémoire), mais est également la mise en cache et pourrait accélérer votre site Web. P> h2>
PHP est généralement invoqué Per-Pageload, donc au moins dans une configuration typique, no.