Çoğu web geliştirici sitenin kodlanmasının bu işin sonu olmadığı ve hatta sona çok uzak olduğu konusunu çok iyi bilir. Web sitesini programladıktan sonra yapılması gereken en önemli şeylerin başında optimizasyon gelir. Bu yazı dizimizde gerek geliştirme aşaması gerek ise sonrası web sitesi ve server optimizasyonu konularına değineceğim.
Optimizasyon: Statik Öğelerde (static assets) Verimli Tarayıcı Önbelleği Kullanımı:
Tarayıcı önbelleği veya artık herkesin de bildiği ingilizce adıyla "cache" sitenizi ikinci defa ziyaret eden kullanıcılar için hız açısından önemli katkı sağlar. Ancak bunun sunucu tarafında ayarlanması gerekmektedir. Başlamadan önce bazı şeyleri bilmekte fayda var.
Nginx: Az donanım harcayarak yüksek kapasiteli trafiği yönetmek için geliştirilen en hızlı web sunucusudur.
Gunicorn: HTTP'den gelen istekleri Python'un anlayacağı bir dile çevirerek karşılıklı iletişim ağını kurar. Nginx üzerinden gelen isteği alır > Gunicorn kurulu Django projesine aktarır > gelen cevabı Nginx üzerinden gelen isteğe aktarır.
Öncelikle Ubuntu işletim sistemi yüklü Nginx ve Gunicorn sunucusu bulunan bir django uygulamamızın olduğunu varsayıyorum. İnternette birçok kaynak bulabilirsiniz, ancak linux işletim sistemi veya nginx sunucusu hakkında tecrübeleriniz yoksa bu basit işlemi yapmak sizin için ciddi sıkıntılar oluşturabilir.
Sunucunuzda web siteniz için başarılı bir şekilde Nginx ve Gunicorn kurulumu gerçekleştirildiğini varsayıyorum.
Django settings.py dosyasında static yolunu oluşturun.
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Serverda düzenlememiz gereken dosyanın yolu: /etc/nginx/sites-available/ klasöründeki projeadınız dosyası.
server {
server_name 123.45.67.890 siteadresi.com www.siteadresi.com;
######################EKLEMENİZ GEREKEN ALAN########################
####################################################################
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/django/myproject; # proje klasörünüzün bulunduğu dizin
expires 7d; # kaç gün önbellekte tutulacağı buradan belirlenir
}
####################################################################
location / {
include proxy_params;
proxy_pass http://unix:/home/django/myproject/myproject.sock; # gunicorn sock dosyasının bulunduğu dizin
}
Dosyayı kaydettikten sonra Nginx'i aşağıdaki komutla yeniden başlatın.
sudo systemctl restart nginx
Şimdi de statik önbellekleme çalışıyor mu diye kontrol edelim.
curl -I https://www.siteadresi/static/img/test.jpg
Şu şekilde çıktı verirse önbellekleme çalışıyor demektir.
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 22 Jan 2021 17:38:12 GMT
Content-Type: image/png
Content-Length: 39826
Last-Modified: Mon, 18 Jan 2021 14:42:15 GMT
Connection: keep-alive
ETag: "60059e47-9b92"
Expires: Fri, 29 Jan 2021 17:38:12 GMT
Cache-Control: max-age=604800
Accept-Ranges: bytes
İşlem bu kadar. Optimizasyon ile alakalı spesifik konuları yazmaya devam edeceğim.