Dampak waktu muat htaccess

Jun 02 2016

Secara umum ada dua kemungkinan menangani barang di Apache:

  • buat konfigurasi untuk folder satu per satu menggunakan file htaccess

  • untuk sepenuhnya mengundurkan diri dari htaccess dan memasukkan semua aturan ke httpd.conf

Penggunaan htaccess adalah masalah waktu buka. Saya ingin tahu, seberapa mahal dalam hal waktu buka penggunaan htaccess? Apakah ada tes?

Jawaban

22 HBruijn Jun 02 2016 at 11:54

The Rekomendasi dari proyek Apache adalah:

Secara umum, Anda sebaiknya hanya menggunakan file .htaccess jika Anda tidak memiliki akses ke file konfigurasi server utama. ... kesalahpahaman yang umum adalah bahwa otentikasi pengguna dan arahan mod_rewrite harus masuk dalam .htaccessfile.

Jadi tolong setel AllowOverride Nonedan semua arahan Anda yang lain di httpd.conf utama (dan / atau subbagian Anda Include)


Ketika Apache tidak dikonfigurasi dengan AllowOverride NoneAnda sudah terjadi penalti kinerja (kecil), terlepas dari apakah ada .htaccessfile yang digunakan atau tidak .

Ini karena untuk setiap permintaan, apache perlu memeriksa keberadaan .htaccessfile potensial di setiap (sub-) direktori yang mengarah ke sumber daya yang diminta. Misalnya ketika file diminta keluar dari direktori / www / htdocs / example, apache harus mencari file berikut:

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

Jadi, untuk setiap akses file yang keluar dari direktori itu, ada 4 akses sistem file tambahan, bahkan jika tidak ada file tersebut yang ada. (Jika AllowOveride disetel untuk /)

Panggilan sistem yang digunakan untuk itu ( man 2 stat) dengan sendirinya tidak terlalu mahal dan biasanya cache sistem file digunakan daripada melakukan polling disk yang sebenarnya, membatasi persyaratan IO yang sebenarnya, tetapi tetap dapat bertambah, seperti argumen artikel ini .


Ketika satu atau lebih .htaccessfile aktual benar-benar ada, apache masih perlu opendan membacanya (memicu operasi pembacaan IO lainnya dan biasanya juga operasi tulis IO untuk memperbarui atimeatribut sistem file ) dan menguraikannya sebelum logika di dalamnya dapat diterapkan.

Tidak seperti saat direktif Anda berada di main httpd.conf, yang hanya membutuhkan apache untuk mengurai mereka sekali, saat startup, setiap .htaccessfile perlu diinterpretasikan lagi untuk setiap permintaan.

Seberapa mahal, selain operasi IO, penguraian file .htaccess bergantung pada kompleksitasnya.

Itu akan membutuhkan pembandingan yang cermat untuk menentukan.

4 user9517 Jun 02 2016 at 07:49

Biaya tergantung pada seberapa kuat server khususnya subsistem I / O penyimpanannya dan apakah ada cache yang terlibat.

Cara untuk mengujinya adalah dengan mengonfigurasi sistem Anda dengan .htacess dan memuat uji dengan cara yang sama seperti yang Anda lakukan pada server web mana pun. Kemudian konfigurasikan sistem tanpa .htaccess dan jalankan pengujian yang sama.

Bandingkan dan kontraskan hasil untuk sistem yang Anda konfigurasikan.

1 HEDMON Jun 02 2016 at 08:03

Saya tidak percaya ada satu jawaban yang benar untuk pertanyaan Anda. Ada banyak variabel yang dapat memengaruhi waktu muat htaccess:

  • Struktur folder situs: semua .htaccess di setiap folder dimuat setiap kali halaman dibuka.
  • Berapa panjang file htaccess: 200 baris vs 3500 baris? ada perbedaan besar.
  • Konfigurasi .htaccess: aturan rewrite dan redirects bisa lebih berat daripada yang lain (dan bukan satu-satunya).
  • Koneksi jaringan di sisi klien dapat memengaruhi waktu buka. IMO, Anda dapat mencobanya dari lebih dari satu tempat dan menggunakan waktu rata-rata sebagai referensi.
  • ab - Alat benchmarking server HTTP Apache dapat membantu Anda

Info lebih lanjut:

1 MitchellK Jun 02 2016 at 08:04

Saya telah menguji dengan dan tanpa .htaccess dan benar-benar tidak menemukan perbedaan dalam kecepatan atau overhead sama sekali. Memang saya hanya menjalankan 16 situs dan ini adalah server super cepat sehingga dalam kasus saya pelacakan milidetik hampir tidak mungkin. Pada server yang menjalankan ratusan situs, overhead mungkin terlihat sehingga @Iain mengatakan uji dan lihat.

Saya pribadi melakukan semuanya menggunakan file .conf untuk virtual host dan bukan .htaccess, ini memberi saya kendali mutlak atas semuanya, lebih bersih dan dimuat sekali ke dalam memori apache. Bahkan aturan penulisan ulang wordpress saya ada di file .conf saya sehingga tidak pernah bisa rusak.