Pre oko 5 godina uključio sam se sa Apache na Nginx .I sa ovim uključenjem praktično sam mogao zaustaviti ubadanje moje noge sa HTTP akceleratorima kao što su Squid i Varnish jer Nginx služe fajlove sa sistema fajlova brže i efikasnije nego akceleratori. I, to je jedan manje, pokretni deo koji može da krene naopako.
Onda,krajem 2010 Amazon je predstavio Custom Origins na njihovom Amazon CloudFront CDN servisu. U odnosu na druge konkurentske CDNs,valjda CloudFront gubi neke repere i dobija neke druge. Ipak, network latency speed-freaks je najveći neprijatelj i CDNs su super.
Sa Custom Origin sve što treba da uradite je da kažete CloudFront da deluje kao "proxy". Potrebno je i URL i zameniti ime domena da ide po originalu sa svog servera. Na primer...
http://mydomain.com/static/foo.css
http://efac1bef32rf3c.cloudfront.net/static/foo.css
http://mydomain.com/static/foo.css
i čuva primerak
Znači, ako napravim moj Nginx server,služeći se sa /static/foo.css
:
Expires: Thu, 31 Dec 2037 23:55:55 GMT Cache-Control: max-age=315360000 Cache-Control: public
Onda će CloudFront učiniti isto i to znači nikada se ponovo neće vratiti na vaš Nginx . Drugim rečima, vaš Nginx server kada služi cacheable statičku imovinu i svi drugi zahtevi su samo uobičajeni HTML i JSON i bez obzira šta pozadina vašeg web server-a izbacuje.
Tako, šta to znači? Znači da možemo značajno promisliti način na koji pišemo kod koji pripremamo i gradimo statička sredstva. Umesto kompleksne gradnje ili run-time procesa koji na kraju pišu fajlove na sistem fajlova,mi možemo u osnovi sve uraditi sve u run-time i ne brinite o brzini. Na primer,nešto kao ovo:
# urls.py url(r'/static/(.*\.css)', views.serve_css) # views.py def serve_css(request, filename): response = http.HttpResponse(mimetype="text/css") response.setHeader('Cache-Control': 'public, max-age:315360000') content = open(filename).read() content = cssmin.cssmin(content) content = '/* copyright: you */\n%s' % content response.write(content) return response
To je neispitan kod koji se može mnogo poboljšati i nadam se da ćete dobiti ideju. Očigledno,tu je mnogo više stvari koje možete i treba da uradite nadovezivanjem datoteke.
Pa,šta ovo još znači? Ne treba vam Nginx.Bar ne za brže prikazivanje statičnih fajlova. Imam shown before that something like Nginx + uWSGI is "better" (brži i manje memorije)nešto kao Apache + mod_wsgi ali često razlika je zanemarljiva.
I za jednu neću ponovo napisati sve moje različite kodove koje sam pripremio za optička statička sredstva hosting ali definitivno imaću ove stvari na umu. Posle svega, tu su i druge divne stvari koje Nginx može takođe uraditi.
Uzgred, ovde je zaista dobar diagram that explains CloudFront