Impact du temps de chargement de htaccess

15

Il y a en général deux possibilités de gérer des trucs sur Apache:

  • faire des configurations pour les dossiers un par un en utilisant le fichier htaccess

  • pour démissionner complètement de htaccess et mettre toutes les règles dans httpd.conf

L'utilisation de htaccess est un problème de temps de chargement. Je veux savoir, combien coûte en termes de temps de chargement l'utilisation de htaccess? Y a-t-il des tests?

Evgeniy
la source

Réponses:

22

La recommandation du projet Apache est:

En général, vous ne devez utiliser les fichiers .htaccess que lorsque vous n'avez pas accès au fichier de configuration du serveur principal. ... une idée fausse commune est que l'authentification des utilisateurs et les directives mod_rewrite doivent aller dans les .htaccessfichiers.

Veuillez donc à la fois définir AllowOverride Noneet toutes vos autres directives dans le httpd.conf principal (et / ou les sous-sections que vous Include)


Lorsque Apache n'est pas configuré avec AllowOverride Nonevous, une pénalité de performance (mineure) se produit déjà, que les .htaccessfichiers soient utilisés ou non .

En effet, pour chaque demande, Apache devra vérifier la présence d'un .htaccessfichier potentiel dans chaque (sous-) répertoire menant à la ressource demandée. Par exemple, lorsqu'un fichier est demandé à partir d'un répertoire / www / htdocs / example, apache doit rechercher les fichiers suivants:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

Et donc, pour chaque accès aux fichiers à partir de ce répertoire, il y a 4 accès supplémentaires au système de fichiers, même si aucun de ces fichiers n'est présent. (Si AllowOveride est défini pour /)

L'appel système utilisé pour that ( man 2 stat) en soi n'est pas si cher et généralement le cache du système de fichiers est utilisé plutôt que d'interroger le disque réel, limitant les besoins réels d'E / S, mais il peut toujours s'additionner, comme le soutient cet article .


Lorsqu'un ou plusieurs .htaccessfichiers réels sont réellement présents, apache doit toujours le openlire et le lire (déclenchant une autre opération de lecture IO et généralement également une opération d' écriture IO pour mettre à jour l' atimeattribut du système de fichiers ) et l' analyser avant que la logique qui s'y trouve puisse être appliquée.

Contrairement à lorsque vos directives sont dans le principal httpd.conf, qui n'a besoin qu'apache pour les analyser une fois, au démarrage, chaque .htaccessfichier doit être interprété à nouveau pour chaque demande.

Le coût, en plus des opérations d'E / S, d'analyser les fichiers .htaccess dépend de leur complexité.

Cela nécessitera une analyse comparative minutieuse pour déterminer.

HBruijn
la source
4

Les dépenses dépendent de la puissance du serveur, en particulier de son sous-système d'E / S de stockage et de la mise en cache.

La façon de le tester est de configurer votre système avec .htacess et de le tester en charge de la même manière que vous le feriez pour n'importe quel serveur Web. Configurez ensuite le système sans .htaccess et exécutez les mêmes tests.

Comparez et contrastez les résultats pour vos systèmes configurés.

user9517
la source
1

Je ne pense pas qu'il y ait une seule bonne réponse à votre question. De nombreuses variables peuvent affecter le temps de chargement de htaccess:

  • Structure des dossiers du site: tous les .htaccess de chaque dossier sont chargés à chaque ouverture de la page.
  • Quelle est la longueur du fichier htaccess: 200 lignes vs 3500 lignes? Il y a une grosse différence.
  • Configuration .htaccess: les règles de réécriture et de redirection peuvent être plus lourdes que d'autres (et ne sont pas les seules).
  • La connexion réseau côté client peut affecter le temps de chargement. OMI, vous pouvez l'essayer de plus d'un endroit et prendre le temps moyen comme une référence.
  • ab - L'outil d'analyse comparative du serveur Apache HTTP peut vous aider

Plus d'informations:

HEDMON
la source
1

J'ai testé avec et sans .htaccess et je n'ai vraiment trouvé aucune différence de vitesse ou de surcharge. Certes, je ne gère que 16 sites et c'est un serveur super rapide, donc dans mon cas, le suivi des millisecondes est presque impossible. Sur un serveur exécutant des centaines de sites, la surcharge peut être perceptible, comme @Iain l'a dit et voir.

Personnellement, je fais tout en utilisant le fichier .conf pour un hôte virtuel et non le .htaccess, il me donne un contrôle absolu sur tout, il est plus propre et il est chargé une fois dans la mémoire d'Apache. Même mes règles de réécriture wordpress se trouvent dans mes fichiers .conf afin qu'elles ne puissent jamais se casser.

MitchellK
la source
à quelle vitesse est super rapide?
James Kirkby
@James Kirkby Je vous enverrai les spécifications exactes du serveur plus tard, hors du bureau dès maintenant. Je gère tout dans des conteneurs Proxmox. Mon serveur Web et mes 16 sites WordPress ont tous un 91-96 sur Google Pagespeed et je suis toujours en train de peaufiner et d'optimiser.
MitchellK
@JamesKirkby Il a 2 x 6 processeurs principaux et 64 Go de Ram exécutant Ubuntu 14.04, Apache 2.4.7 et PHP-FPM. C'est une petite bête de note, je suis ravi de ses performances.
MitchellK