Htaccess'in yükleme süresi etkisi

Jun 02 2016

Genel olarak Apache'de bir şeyler işlemenin iki olasılığı vardır:

  • htaccess dosyasını kullanarak klasörler için tek tek yapılandırmalar yapın

  • htaccess'ten tamamen vazgeçmek ve tüm kuralları httpd.conf'a koymak

Htaccess kullanımı bir yükleme süresi sorunudur. Htaccess kullanımı yükleme süresi açısından ne kadar pahalı olduğunu bilmek istiyorum. Herhangi bir test var mı?

Yanıtlar

22 HBruijn Jun 02 2016 at 11:54

Öneri Apache projesinden geçerli:

Genel olarak, ana sunucu yapılandırma dosyasına erişiminiz olmadığında sadece .htaccess dosyalarını kullanmalısınız. ... yaygın bir yanılgı , kullanıcı kimlik doğrulaması ve mod_rewrite yönergelerinin .htaccessdosyalara girmesi gerektiğidir .

Bu nedenle, lütfen hem AllowOverride Noneana httpd.conf (ve / veya sizin alt bölümlerinizde Include)


Apache sizinle yapılandırılmadığında , AllowOverride Noneherhangi bir .htaccessdosya kullanılıp kullanılmadığına bakılmaksızın, halihazırda (küçük) bir performans cezası oluşur .

Bunun nedeni , apache'nin her istek.htaccess için, istenen kaynağa giden her (alt) dizinde olası bir dosyanın varlığını kontrol etmesi gerekeceğidir . Örneğin, / www / htdocs / example dizininden bir dosya talep edildiğinde, apache aşağıdaki dosyaları aramalıdır:

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

Ve böylece, bu dizinden her dosya erişimi için, bu dosyalardan hiçbiri olmasa bile 4 ek dosya sistemi erişimi vardır. (AllowOveride, / için ayarlanmışsa)

Bunun için kullanılan sistem çağrısı ( man 2 stat) kendi başına o kadar pahalı değildir ve tipik olarak gerçek diski sorgulamak yerine dosya sistemi önbelleği kullanılır, gerçek GÇ gereksinimlerini sınırlar, ancak bu makalenin iddia ettiği gibi yine de artabilir.


Bir veya daha fazla gerçek .htaccessdosya mevcut olduğunda, apache'nin yine de onu openokuması ve okuması ( başka bir GÇ okuma işlemini ve genellikle dosya sistemi özniteliğini güncellemek için bir GÇ yazma işlemini tetikler atime) ve içindeki mantık uygulanmadan önce onu ayrıştırması gerekir.

Yönergelerinizin httpd.conf, başlangıçta yalnızca bir kez ayrıştırmak için apache'ye ihtiyaç duyan ana kısımda olmasının aksine , her .htaccessdosyanın her istek için yeniden yorumlanması gerekir.

GÇ işlemlerine ek olarak .htaccess dosyalarının ayrıştırılmasının ne kadar pahalı olduğu karmaşıklıklarına bağlıdır.

Bunu belirlemek için dikkatli bir kıyaslama yapmanız gerekecektir.

4 user9517 Jun 02 2016 at 07:49

Masraf, sunucunun özellikle depolama I / O alt sisteminin ne kadar güçlü olduğuna ve herhangi bir önbelleğe alma olup olmadığına bağlıdır.

Bunu test etmenin yolu, sisteminizi .htacess ile yapılandırmak ve herhangi bir web sunucusunda yaptığınız gibi test etmektir. Sonra sistemi .htaccess olmadan yapılandırın ve aynı testleri çalıştırın.

Karşılaştırın ve sonuçlarını kontrast sizin yapılandırılmış sistemleri.

1 HEDMON Jun 02 2016 at 08:03

Sorunuzun tek bir doğru cevabı olduğuna inanmıyorum. Htaccess yükleme süresini etkileyebilecek birçok değişken:

  • Site klasörü yapısı: Her klasördeki tüm .htaccess sayfa her açıldığında yüklenir.
  • Htaccess dosyası ne kadar uzun: 200 satır mı 3500 satır mı? büyük bir fark var.
  • .htaccess yapılandırması: yeniden yazma ve yeniden yönlendirme kuralları diğerlerinden daha ağır olabilir (ve sadece bunlar değildir).
  • İstemci tarafındaki ağ bağlantısı yükleme süresini etkileyebilir. IMO, birden fazla yerden deneyebilir ve ortalama süreyi bir referans gibi alabilirsin.
  • ab - Apache HTTP sunucusu karşılaştırma aracı size yardımcı olabilir

Daha fazla bilgi:

1 MitchellK Jun 02 2016 at 08:04

Htaccess ile ve .htaccess olmadan test ettim ve hızda veya ek yükte gerçekten hiçbir fark bulamadım. Sadece 16 site çalıştırdığım ve süper hızlı bir sunucu olduğu için milisaniyeleri izlemek neredeyse imkansız. Yüzlerce siteyi çalıştıran bir sunucuda, @Iain'in test et ve gör dediği gibi ek yük fark edilebilir.

Ben şahsen her şeyi sanal bir konak için .conf dosyasını kullanarak yapıyorum, .htaccess bana her şey üzerinde mutlak kontrol sağlıyor, daha temiz ve apache'nin belleğine bir kez yükleniyor. Hatta benim wordpress yeniden yazma kurallarım bile .conf dosyalarımda var, bu yüzden asla bozulamaz.