Bukan Wordpress sendiri

Pasar CMS telah lama menjadi tempat di mana Wordpress, Joomla, Drupal berada di posisi tiga teratas. Masa-masa indah ini secara bertahap telah berlalu, meskipun WP, yang melambat dalam dinamika munculnya situs baru, masih memimpin. Tidak heran: komunitas yang aktif, sejumlah besar plugin. Namun, artikel ini sama sekali tidak akan dikhususkan untuk "bintang baru" dari pasar sistem manajemen konten (halo, solusi berbasis Laravel). Sebaliknya, bahkan objek perhatian kita adalah "materi hitam", yang agak miring. Yaitu - drum roll ...
Situs statis
Siapa yang butuh statika di 2k20?
Pertanyaan rasional! Tampaknya hari-hari Internet telepon dan Windows95 telah berlalu, tetapi permintaan untuk pembuatan kode html statis mulai mendapatkan momentum lagi. Dan perusahaan yang baik tentu saja harus disalahkan. Google PageSpeed adalah Urfi yang sangat hebat dan perkasa ... Secara umum, pengukur kinerja laman web inilah yang telah menjadi mesin kemajuan dunia Internet dan memusingkan semua pengembang web, dan terlebih lagi bagi para freelancer. Hasil pengukuran alat ini didasarkan pada standar Google, dan selama ini diketahui bahwa ini menjadi dasar untuk pemeringkatan. Dan secara objektif, memuat halaman selama lebih dari tiga detik secara otomatis meningkatkan jumlah pantulan. Dengan demikian, statika menjadi salah satu solusi alternatif untuk menggantikan atau selain perakitan halaman dinamis dengan kekuatan CMS, kerangka kerja atau opsi yang ditulis sendiri.
,
Saat bertugas, saya terlibat dalam melayani banyak proyek, di antaranya ada parser, tetapi juga solusi di bidang e-commerce. Saya tidak mengeluh tentang kehidupan, tapi masalah yang muncul bukan dari kategori “kelas 2 SD”. Saya, sebagai pengembang, dan manajer (dan mengelola bisnis kecil saya, seperti yang Anda ketahui, membutuhkan keterampilan dari bidang ini juga), seperti dalam bahasa Polandia “dostałem się do martwego kąta” (singkatnya, masuk ke sudut terpencil). Syaratnya adalah sebagai berikut: Anda perlu menulis solusi dalam beberapa hari yang seharusnya mudah dipasang dan melayani sejumlah halaman statis. Selain itu, administrator harus dapat dengan cepat menghapus dan menambahkan solusi tersebut ke proyek apa pun melalui koneksi FTP / SFTP, atau bahkan jika dia tidak memiliki akses ke FTP / SFTP. Di sisi lain, syaratnya adalah versi minimumnya adalah PHP 5.6 dan itu harus didukung dengan cukup baik seperti setiap versi yang lebih baru.
Administrator harus
- hapus / tambah / ubah halaman menggunakan panel admin;
- secara global dan cepat mencari di konten halaman (dengan mempertimbangkan pengkodean yang berbeda, bahasa;
- cari berdasarkan nama file;
- hapus / masukkan / ubah elemen yang diperlukan di semua halaman dengan satu klik dari panel admin;
- solusinya harus mudah dipasang dan dihapus.
Keamanan seharusnya tidak mengizinkan penggunaan injeksi SQL atau upaya lain apa pun untuk mengganggu pekerjaan.
Kewajiban tambahan adalah kemampuan untuk menggunakan panel admin dan semua fungsinya melalui API. Secara kasar, jika ada panel admin seperti itu di 50+ domain, harus ada akses ke sana dari jarak jauh dengan dapat membuat permintaan.
Republik Ceko, malam, musim panas, kopi
Malam yang sangat tenang di Pegunungan Raksasa hanya berkontribusi pada kemalasan. Tetapi, seperti kata pepatah lama, siapa yang tidak bekerja ...
Jadi, setelah mengumpulkan pikiran saya dan membangkitkan semangat dan ketegasan saya, saya mulai merancang. Hal yang sangat jelas bahwa pembuatan solusi prosedural tidak bisa sesukses mungkin dalam kasus ini. Bukan rahasia lagi bahwa ada prospek untuk mendukung sistem di masa depan, tetapi pada saat yang sama Anda tidak ingin mengubah segalanya terlalu banyak.
Dan ya, sial, saya memutuskan untuk mentransfer ke dalam satu file pendekatan yang sudah mapan di sebagian besar kerangka kerja - konsep OOP dan MVC.
Dari sudut pandang kinerja, proseduralisme mungkin merupakan pilihan terbaik, tetapi:
- jangan lupa tentang aspek kebutuhan klien yang terus berkembang dan kebutuhan paralel untuk menambahkan kemampuan baru ke antarmuka aplikasi web kita;
- — , , ;
- — , “ ” , - -, -.
Diputuskan untuk meninggalkan basis untuk saat ini karena kurangnya kebutuhan, oleh karena itu istilah "model" dalam segala hal di atas adalah konsep yang belum terealisasi dalam arsitektur saya. Kurangnya implementasi di sini berfungsi dengan baik, karena injeksi SQL pada prinsipnya tidak lagi memungkinkan.
Penataan
Melanjutkan dari fakta bahwa kami memiliki satu file dan ada aturan utama - hanya satu file yang harus ditambahkan dan setelah itu Anda dapat segera bekerja dan memelihara direktori tempat Anda menambahkannya, jelas bahwa bahkan kelas tidak akan menyelamatkan Anda dari "kaki setan".
Apa solusinya?
Secara intuitif: kami membagi file menjadi beberapa bagian struktural tampilan: kelas sistem dasar berada di paling atas, pengontrol lebih rendah, tampilan bahkan lebih rendah, tetapi seluruh balet ditutup oleh rute. Setiap bagian mendapat header dari komentar dengan penjelasan, agar tidak lupa setelah beberapa saat di sini:
/*
* This is the part for routing
*Additional information...
*/
Penamaan fungsional - metode kelas diberi nama sesuai dengan praktik camelCase dan sesuai dengan peran fungsional, misalnya "checkAdminCredentials" adalah formulasi yang lebih dari yang dapat dimengerti untuk suatu metode.
Upaya untuk menggambarkan segala sesuatu yang mungkin - Saya tidak akan mengatakan bahwa saya sesuai dengan niat ini sampai akhir pengembangan, pada akhirnya, saya bermanuver antara kecepatan dan keterbacaan kode, tetapi saya berhasil menemani keputusan utama dengan komentar seperti // untuk mendapatkan html statis.
Bagaimana perutean dilakukan?
Kebutuhan akan pemisahan antarmuka yang kurang lebih jelas segera diterima oleh saya sebagai kebutuhan utama. Komponen ini, jika tidak diimplementasikan dengan benar, bisa menjadi "spike point" dari aplikasi karena kebingungan tentang rute mana yang memanggil pengontrol mana.
Berdasarkan masalah yang disebutkan di atas, saya membuat kelas untuk perutean agak primitif, tetapi fungsional. Perutean bekerja menggunakan permintaan GET - tentu saja, tidak sepenuhnya menyenangkan secara estetika, tetapi kebutuhan mendesak untuk implementasi yang cepat 100% terpecahkan. Router telah menjadi satu-satunya titik masuk untuk aplikasi web (yaitu untuk panel admin), yang menurut saya merupakan solusi ideal untuk kemudahan pengembangan. Di kelas ini, aplikasi web front-end dan back-end dirakit dan HTML yang dihasilkan dikeluarkan oleh return.
Pertanyaan: apakah saya menulis sepeda?
Saya cenderung curiga bahwa solusi serupa telah ditulis di masa lalu, tetapi pada Juli 2020, baik bahasa Inggris, atau Polandia, atau Ceko, atau Rusia dan Ukraina membantu saya menemukan sesuatu yang berharga dan berlaku untuk kasus saya. Itulah sebabnya sang pencipta “menghidupkan” saya, dan dari lubuk hati saya yang paling dalam, saya merancang solusi dari masalah bisnis yang mendesak. Toh jika ada masalah harus diselesaikan secepat dan se-ekonomis mungkin, selain itu kualitasnya tidak boleh dilupakan.
Contoh kinerja yang jelas
Satu CMS yang sangat terkenal, yang namanya biasanya tidak disebut:
Solusi saya:
Jelas, kecepatan mendapatkan byte pertama sedikit lebih tinggi, seperti semua indikator lain yang terkait dengan kecepatan unduh, saya bahkan tidak akan mendemonstrasikan jumlah permintaan ke front-end di CMS klasik dan di solusi mini ini.
Akankah ada sekuelnya?
Sekarang sistem sebagian besar telah ditulis dan telah melihat beberapa pembaruan. Dalam waktu dekat, saya berencana untuk menyiapkan dokumentasi dalam satu bentuk atau lainnya, tetapi untuk merilis solusi ini dalam perjalanan terbuka, meskipun saya harus mengatakan bahwa dia menyelesaikan masalah internal setiap hari dengan sempurna. Ada beberapa momen yang lebih menarik dan menghibur dari bagian pencarian file dan pencarian konten dalam file html, yang diimplementasikan dengan melewati kemampuan PHP, yang membuat eksekusi permintaan ini jauh lebih cepat. Saya berjanji untuk menulis tentang topik ini dalam waktu dekat.