Вот некоторые оптимизации, которые я использую на регулярной основе:
frontend:
Используйте библиотеку загрузки js, такую как labjs , requirejs или yepnope .Вы все равно должны сжимать / объединять свои js-файлы, но в большинстве случаев представляется целесообразным сделать несколько запросов к нескольким js-файлам и запустить их параллельно, чтобы на каждой странице имелся по 1 огромному js-файлу.Я всегда разделяю их на группы, которые имеют смысл сбалансировать запросы и загрузку parellel.Некоторые также допускают условную загрузку и восстановление после отказа (т. Е. Если по какой-то причине ваш cdn'd jquery больше не существует)
Используйте спрайты, где это возможно.
Бэкэнд:
- настройка django-компрессора (django-static в порядке)
- Включение сжатия gzip в nginx.
- Если вы используете postgresql (который является рекомендуемой базой данных sql), используйте что-то вроде pgbouncer или pgpool2.
- Использование и настройка кэша (я использую redis)
- (уже упоминалось - используйте сельдерей для всего, что может занять больше времени)
- Небольшая работа с базой данных: используйте индексы там, где это необходимо,обращайте внимание на то, чтобы делать слишком много запросов (обычно, когда вы не используете select_related там, где вы должны) или медленных запросов (включите медленные запросы журнала в вашей базе данных).Всегда используйте select_related с аргументами.
- При реализации поиска я всегда использую автономную поисковую систему.(asticsearch / solr)
- Теперь идет профилирование приложения и поиск улучшений, специфичных для кода.Некоторые вещи, на которые следует обратить внимание .