• По мере роста популярности ресурса, которым я заведую, нагрузки на сервер возросли кратно. Описанные ранее техники оптимизации исчерпали свой ресурс. Все индексы были созданы, все limit проставлены и из всех select'ов пропали звезды. Этого хватило не надолго. Через какое-то время, обычные запросы начали работать, как за 0.0002 сек, так и за 5. Как ускорить загрузку страницы в несколько раз?

  • Оптимизация SQL запросовПортал за которым я слежу на работе посещают в день десятки тысяч человек. Сайт специфичный, и требует серьезной работы с базой данных. Нагрузки на сервер соответствующие. Бывает, что проворачивая сложные sql запросы, mysql на долго вешал сервер и сайт был недоступен. особенно это ощущалось в пятницу вечером и в выходные, когда посещения сайта были максимальными. Мой администратор сказал, что все дело в кривых SQL запросах, и он со своей стороны все, что мог уже оптимизировал. 

    Я начал искать, и нашел. Расскажу, как я замерял скорость и опишу пару оптимизаций.

  • Когда ресурс вырастает из объема одной страницы, уже целесообразно, для удобства использования, добавить на сайт поиск. Поисковые механизмы бывают разные. Для блога, типа этого, вам вполне хватит

    select * from material where innertext like '%xdan.ru%' or title like '%xdan.ru%' limit 10;

    Она отлично работает, на сайтах с небольшой аудиторией и небольшим объемом информации. Но что если сделать то же самое для поиска из таблицы в несколько тысяч записей?

    Если вы вспомнили про индексы, то они вам тут не помогут. Тот факт, что поиск ведется по всему полю %, а не с его начала, уже делает использование индексов невозможным. Т.е. запрос выше, тупо перебирает все строки и  ищет соответствие. В больших таблицах это может занимать длительное время.  Как же быть? Google нам сообщает, что есть такой зверь: полнотекстовый индекс и полнотекстовый поиск.

  • В наше время найти достойную компанию для оптимизации сайта, довольно сложно. Интернет кишит различного рода оптимизаторами, главной заслугой которых является покупка программы для автоматического спама, и базы к ней. Такая раскрутка сайта редко ведет к положительным результатам. Скажу больше, она может привести и к отрицательному эффекту и пожизненному бану у поисковиков.

    В этой среде, компании которые занимаются действительно профессиональной раскруткой, обычно теряются. Нужна изрядная доля оптимизма и не малая сумма денег, чтобы найти действительно рабочее и стоящее решение.

    Этим компания Оптимизм выгодно и отличается. Эти ребята не занимаются "черной раскруткой". Все методы, абсолютно честные, и по сути прописаны самими поисковыми системами. Это в первую очередь контекстная реклама.

  • Оптимизация сайта под поисковые системыКоличество начинающих разработчиков сайтов неумолимо растет с каждым годом. Интернет полностью охватил все уголки земного шара. Им пользуются люди от детсадовского возраста и до пенсионного. И собственный интернет-проект вполне может конкурировать с малым бизнесом по объемам получаемой прибыли. А если еще учесть, что для открытия своего ресурса не нужно иметь авторитетные связи и толстый кошелек, интернет-бизнес становится все более привлекательным. В основном для молодежи, которая не должна упустить один из шансов построить свою жизнь.

    Собственный сайт быстро надоедает, если не вкладывать в него душу и не окунуться во все прелести самостоятельного его создания. Это долгий процесс, требующий изучения многих аспектов, но он того стоит. Иметь интересную идею и не суметь ее воплотить в реальность очень неприятно.

    Создание сайта состоит из 4 этапов: разработка дизайна, его верстка, программирование и оптимизация. Каждый этап полон творческой работы и сильно отличается от других. Однако если первые три направлены на разработку рабочего функционала сайта, то последний - на его посещаемость. Никакая реклама не даст такого эффекта, как высокое положение при выдаче в поисковых системах. Поэтому заниматься оптимизацией - SEO (Search Engine Optimization) просто необходимо.

  • Создавая мобильную версию одного крупного сервиса, задумался, а как можно ускорить загрузку страниц сайта. Придумал для себя несколько путей ускорения.

    Оптимизация скорости загрузки сайта

    • Сжатие всех данных css, js, html gzip-ом
    • Сбор всех стилей и скриптов в два соответствующих файла. 
    • Установка времени сброса кеша на большой период.
    • Сбор всех иконок и т.п. графики в один графический файл, подобно тому, как это делает bootstrap
    • Кеширование генерированных страниц в файл, дабы потом не грузить mysql для неизменяемых данных
    • Общая оптимизация кода: js желательно подключать в конце страницы. Если используются like-кнопки различных сервисов, то лучше использовать код асинхронной загрузки, так как любой js тормозит прорисовку страницы до полной своей загрузки и выполнения. 
  • В этой короткой заметке расскажу об одной технике, казалось бы очень очевидной, но тем не менее новички в программирования на JavaSсript часто про нее забывают. 

    Для начала обычный код, который Вы, я уверен, видели ни раз.

    $('input').keyup(function(){
    	$.post('autocomplite.php',{str:this.value},function(data){
    		complite(data);
    	});
    })

     По мере набора текста, значение из поля ввода отправляется на сервер. Такой код часто используется в поиске по сайту, или для автокомплита.  

    Что в этом коде не так, как Вы считаете?