Nginx-ն այժմ հնացա՞ծ է, որ մենք ունենք Amazon CloudFront-ը

Մոտավորապես 5 տարի առաջ ես Apache-ից անցում կատարեցի Nginx-ին: Եվ այդ անցմամբ ես կարողացա գործնականորեն վերջ դնել Squid-ի և Varnish-ի նման HTTP արագացուցիչների հետ աշխատանքին, քանի որ Nginx-ը և՛ ավելի արագ և՛ ավելի արդյունավետ կերպով է սպասարկում ֆայլերին ֆայլային համակարգից, քան արագացուցիչները: Եվ մեկով պակասում է սխալվելու հավանականություն ունեցող շարժվող հատվածների թիվը: 

Ավելի ուշ՝ 2010թ-ի վերջերին Amazon-ը ներկայացրեց Custom Origins-ը իրենց Amazon CloudFront CDN ծառայությունում: Համեմատած մրցակցող մյուս CDN-ների հետ՝ ենթադրում եմ, որ CloudFront-ը կորցնում է մի քանի չափորոշիչներ և մեկ ուրիշներն է հաղթում: Այդուհանդերձ, ցանցի հապաղումը speed-freaks-ի ամենից մեծ թշնամին է, իսկ CDN-ները հիասքանչ են:

Custom Origin-ի դեպքում Ձեզ միայն մնում է այն, որ դուք ասեք CloudFront-ին, որ գործի որպես <<proxy>>: Այն վերցնում է URL-ն և փոխարինում տիրույթի անունը, որպեսզի գնա և բերի իսկականը Ձեր սերվերից: Օրինակ …

  1. Դուք պատրաստում եք http://mydomain.com/static/foo.css
  2. Դուք կազմաձևում եք Ձեր CloudFront-ը, որպեսզի ձեռք բերեք Ձեր նոր տիրույթը (նաև հայտնի որպես <<Distribution>>)
  3. Դուք հարցում եք անում http://efac1bef32rf3c.cloudfront.net/static/foo.css
  4. CloudFront-ը գտնում և բերում է աղբյուրը http://mydomain.com/static/foo.css-ից և պատճեն է պահպանում
  5. CloudFront-ն ուսումնասիրում է, թե որ հիշապահեստային էջագլուխներն են օգտագործվել, և կրկնում է դրանք: Հավիտյան:

Այսպիսով, եթե ես իմ Nginx սերվերով սպասարկեմ /static/foo.css-ը հետևյալով՝

Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Cache-Control: public

Ապա CloudFront-ը նույնը կանի, և դա նշանակում է, որ այն երբեք նորից Ձեր Nginx չի վերադառնա: Այլ կերպ ասած, Ձեր Nginx սերվերը սպասարկում է հիշապահեստում պահվող ստատիկ արժեքներին մեկ անգամ, և մյուս բոլոր հարցումները պարզապես սովորական HTML և JSON են և այն ամենը, ինչ Ձեր հետին պլանի վեբ սերվերը դուրս է բերում:

Այսպիսով, ի՞նչ է սա նշանակում: Սա նշանակում է, որ մենք կարող ենք էականորեն վերանայել այն ձևը, որով մենք գրում ենք կոդը, որն էլ նախապատրաստում և կառուցում է ստատիկ արժեքներ: Ֆայլային համակարգում ի վերջո ֆայլեր գրող աշխատանքային գործընթացի կամ բարդ կառուցման փոխարեն մենք կարող ենք, ըստ էության, այդ ամենն անել աշխատաժամանակում և չանհանգստանալ արագության համար: Օրինակ՝ սրա նման ինչ-որ բան՝

# 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

Չփորձարկված կոդն է, որը կարելի է շատ բարելավել, սակայն հուսով եմ, որ գաղափարը հասկացաք: Ակնհայտորեն, ավելի շատ բաներ կան, որ դուք կարող եք և պետք է անեք, օրինակ ֆայլերի միացում:

Այսպիսով, ի՞նչ է սա նաև նշանակում: Ձեզ անհրաժեշտ չէ Nginx: Գոնե ոչ ստատիկ ֆայլերն ավելի արագ սպասարկելու համար: Ես նախկինում ցույց եմ տվել, որ Nginx + uWSGI-ի նման ինչ-որ բան <<ավելի լավ>> է (ավելի արագ և ավելի քիչ հիշողություն), քան Apache + mod_wsgi-ի նման ինչ-որ մի բան, սակայն հաճախ տարբերությունը չնչին է:

source: http://www.peterbe.com/plog/is-nginx-obsolete-amazon-cloudfront