Nginx 1.6.2 - правилен redirect 301

vassy

Active Member
Правя един сайт и магазин на Odoo 8 final (бивше OpenERP) освен ERP и с вградените website builder, e-commerce модули, blog, forum и др. (писан е на python).
Odoo 8 работи на собствен web сървър на werkzeug. Ползвам nginx 1.6.2 за proxy. Проверявайки времето за зареждане на началната страница (2-2.3 сек.) ми направи впечатление голямото време за редирект 301 от http://domain.tld на https://www.domain.tld - около 1.8-2.1 сек. Директно https://www.domain.tld се зарежда за около 200ms. Разрових се с гугъл да търся решение за намаляване на това време за редирект и попаднах на този линк - https://www.tinywp.in/301-redirect-wordpress/. Там индиец обяснява кое е по бързо, според него това:

Вариант 1
PHP:
server {
    ...
    server_name www.domainname.com;
    return 301 $scheme://domainname.com$request_uri;
    ...
}

е по бързо от това:

Вариант 2
PHP:
server {
    ...
    server_name domainname.com;
    rewrite ^/(.*)$ http://www.domain.com/$1 permanent;
    ...
}

При мен беше точно уж верния и по-бърз вариант 1. Реших да сложа бавния вариант 2 за проба. И...изненада, сайта се зарежда за около 200 ms заедно с редиректа. Your website is faster than 99% of all tested websites - tools.pingdom.com/fpt/

Интересно ми е защо така се получи. Моля за коментари!
 
От: Nginx 1.6.2 - правилен redirect 301

Пише, че е по-ефикасно и по-добро, но не и по-бързо. Забележи че с първия редирект определяш динамично в зависимост от http query-то към какъв протокол да направиш редиректа, към http или https. Там се случва малко забавяне. Обикновено при https имаш от 100 до 150 милисекунди. Ако на openssl изключиш по-бавните алгоритми за криптиране и оставиш само модерните, ще свалиш може би 50 до 75 милисекунди.
 
От: Nginx 1.6.2 - правилен redirect 301

Странното е че, например при Magento (на същия сървър) няма разлика във времето за реадирект, и при двата метода е около 200 ms. Обяснявам си го с ползването на собствения web сървър werkzeug на Odoo.
 

Горе