Sitemap Django Lambat

Sitemap dengan isi cuma 7 ribuan URL kok lambat banget ya, akhirnya diakali dengan nginx, karena ini masih static file juga, biarin nginx aja yang kerja, dikombinasi dengan perintah wget via crontab 5 menit sekali mengunduh file yang asli, kemudian tambahkan location block yang baru di nginx. Hasilnya cuepet!

location /index.xml {
   alias /home/kholidfu/path/to/index.xml;
}

perintah wget di crontab

*/5 * * * * wget https://example.com/sitemap.xml -O /home/kholidfu/path/to/index.xml

Done

 

Advertisements

Optimasi Django ala Pixabay

Yes, you heard it right, pixabay using django, dan ini ada artikel menarik tentang bagaimana mereka melakukan optimasi terhadap django

Django Optimizations and Performance Tips from Pixabay

Beberapa catatan dari pixabay:

  • Pelajari teknik optimasi seperti yang disarankan django di dokumentasi resmi
  • Selalu gunakan memcached
  • Kecepatan cache view > cache template, jadi sebisa mungkin gunakan fungsi decorator cache_page
  • Gunakan ujson > json

Tentang TTFB (Time To First Byte)

Jika kita membaca artikel dari Google disini, kita akan dapati bahwa Google menyarankan waktu respon server kita jangan sampai lebih dari 200ms. Karena kecepatan situs merupakan salah satu parameter penilaian SEO, bisa jadi jika waktu respon server lebih dari 200ms akan berpengaruh terhadap posisi kita di mata mesin pencari (utamanya Google).

Continue reading “Tentang TTFB (Time To First Byte)”

Tentang Caching di Django

Sedikit cerita tentang cache backend, saya menggunakan redis sebagai default cache backend di django, ini juga berarti redis saya gunakan untuk:

  • fungsi decorator cache_page
  • cache query database
  • dependensi python-rq
  • dependensi django-cachalot

Kejadian server bolak-balik mati karena service redis gagal terhubung, akhirnya saya ubah redis hanya untuk dependensi python-rq saja, selainnya saya menggunakan memcached. Dan untuk sementara problem error connection di redis teratasi.

[UPDATE]: Sampai saat ini, kurang lebih 12 jam sejak beralih dari redis ke memcached, problem redis error connection ndak muncul, semoga terus anteng si server.

Redis Bikin Panik

Semalaman jaga lilin karena server bolak-balik mati, setelah diinvestigasi, karena redis service mati, error connection. Perlu diketahui, redis ini merupakan backend default cache dari aplikasi django yang saya buat (baik untuk cache_page maupun dependensi untuk library python-rq), akhirnya gerak cepat untuk mengganti redis dengan memcached untuk fungsi decorator cache_page saja.

sudo apt-get install memcached
pip install python-memcached

Redis tetap saya gunakan karena terkait dengan python-rq yang memang saya perlukan. Sehingga untuk cache_page sekarang saya pakai memcached. Let’s see how this combination will perform…

Mahalnya Django-HTMLmin

Awalnya berniat untuk memperkecil ukuran html dengan menghapus baris-baris kosong yang tidak perlu, namun ternyata ada harga yang harus dibayar, yakni respon server menjadi lambat, dan akhirnya…

pip uninstall django-htmlmin
pip freeze > requirements.txt

Setelah di-uninstall, load CPU server turun hampir separonya…

Optimasi Gambar PNG dengan pngquant

Beberapa alternatif command line tool untuk compress gambar png diantaranya pngcrush, optipng dan pngquant dan mungkin ada lagi yang saya belum pernah coba. Di antara ketiganya yang menghasilkan kualitas kompresi paling bagus adalah pngquant. Dari situs resminya disebutkan kalau pngquant bisa compress png sampai 70%. Mau coba?

Continue reading “Optimasi Gambar PNG dengan pngquant”

Featured

Kitab Nginx

Nginx – sebuah aplikasi web server yang cepat dan multi-fungsi, saya sendiri sering memanfaatkan nginx untuk web server, http_image_filter, melayani statics file, optimasi kecepatan loading sebuah halaman, cache dan masih banyak lagi. Untuk itu pantas kiranya dibuatkan featured post tersendiri, biar lebih mudah dicari. Seperti biasa, tulisan ini juga bersifat continuously improved.

Continue reading “Kitab Nginx”

Tentang Query Random

Sebenarnya tema optimasi ini tidak terbatas pada python/django aja sih, bisa bahasa apa pun. Kadangkala dalam sebuah project kita butuh untuk menampilkan data secara random, entah itu random user, random post maupun random-random lainnya. Jika data masih sedikit (< 50k rows) mungkin tidak terlalu masalah, namun akan menjadi masalah kalau data sudah di atas 50.000 baris dengan model relasi yang cukup kompleks. Bagaimana cara yang efisien?

Continue reading “Tentang Query Random”