Konteks
Bekerja sebagai pengembang lepas, saya sering membuat situs web sepenuhnya berdasarkan XSLT. Dengan kata lain, pada setiap permintaan, file XML dihasilkan, berisi semua yang perlu kita ketahui tentang konten halaman: nama pengguna yang saat ini masuk, entri menu atas, jika menu ini dinamis / dapat dikonfigurasi, teks untuk tampilkan di area spesifik halaman, dll. Kemudian proses XSL (cache, dll.) ke halaman HTML / XHTML untuk dikirim ke browser.
Ini memiliki poin yang baik untuk membuatnya lebih mudah untuk membuat situs web skala kecil, terutama dengan PHP. Ini adalah semacam mesin template, tetapi saya lebih suka mesin template lain karena jauh lebih kuat daripada kebanyakan mesin template, dan karena saya tahu itu lebih baik dan menyukainya. Juga dimungkinkan, jika perlu, untuk memberikan akses ke data XML mentah berdasarkan permintaan untuk akses otomatis, tanpa perlu membuat API terpisah.
Tentu saja, itu akan gagal sepenuhnya pada situs web skala menengah atau besar, karena, bahkan dengan teknik caching yang baik, XSL masih menurunkan kinerja situs web secara keseluruhan dan membutuhkan lebih banyak server di sisi server.
Pertanyaan
Browser modern memiliki kemampuan untuk mengambil file XML dan mentransformasikannya dengan file XSL terkait yang dinyatakan dalam XML like <?xml-stylesheet href="demo.xslt" type="text/xsl"?>
. Firefox 3 dapat melakukannya. Internet Explorer 8 juga dapat melakukannya.
Ini berarti bahwa dimungkinkan untuk memigrasikan pemrosesan XSL dari server ke sisi klien untuk 50% pengguna (berdasarkan statistik peramban di beberapa situs web tempat saya mungkin ingin menerapkan ini). Ini berarti bahwa 50% pengguna hanya akan menerima file XML pada setiap permintaan, sehingga mengurangi bandwidth mereka dan server (file XML menjadi lebih pendek dari analog HTML yang diproses), dan mengurangi penggunaan CPU server.
Apa kelemahan teknik ini?
Saya memikirkan beberapa hal, tetapi itu tidak berlaku dalam situasi ini:
- Implementasi yang sulit dan kebutuhan untuk memilih, berdasarkan permintaan browser, kapan harus mengirim XML mentah dan kapan harus mengubahnya ke HTML. Jelas, sistem tidak akan jauh lebih sulit daripada yang sebenarnya. Satu-satunya perubahan yang dilakukan adalah menambahkan tautan file XSL ke setiap XML, dan menambahkan cek browser.
- Lebih banyak IO dan penggunaan bandwidth, karena file XSLT akan diunduh oleh browser, alih-alih di-cache oleh server. Saya tidak berpikir itu akan menjadi masalah, karena file XSLT akan di-cache oleh browser (seperti gambar, atau CSS, atau file JavaScript sebenarnya di-cache).
- Mungkin ada beberapa masalah di sisi klien, seperti mungkin masalah saat menyimpan halaman di beberapa browser.
- Kesulitan untuk men-debug kode: tidak mungkin memperoleh sumber HTML yang sebenarnya digunakan peramban, karena satu-satunya sumber yang ditampilkan adalah XML yang diunduh. Di sisi lain, saya jarang melihat kode HTML di sisi klien, dan dalam kebanyakan kasus, itu tidak dapat digunakan secara langsung (spasi kosong dihapus).
ngx_http_xslt_module
atau keempatnya). Saya sangat meragukan dukungan sisi klien XSLT 2.0 lebih baik.