Загрузка данных с помощью Ajax с удаленного сервера | ВесьТоп создание и продвижение сайтов

Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

Загрузка данных с помощью Ajax с удаленного сервера

Загрузка данных с помощью Ajax с удаленного сервера

Задача по оптимизации скорости работы сайта

Недавно работал над сайтом Словарь слов на болгарском языке. На этом сайте при поиске слова в правом столбце загружается блок с похожими словами. К таким словам относятся слова, полученные из поискового слова путем добавления, удаления или замены одной или двух букв. Для поиска таких слов используется алгоритм высокой сложности, который работает медленно, поскольку выполняет поиск по всей таблице слов. Размер таблицы составлял около 100 000 строк, и она росла, и в результате загрузка страницы занимала до 30 секунд — слишком долго для веб-страницы. Моей задачей было найти способ оптимизировать скорость работы сайта.

Ответ

Первое, что я сделал, — это попытался оптимизировать SQL-запрос. Используемый алгоритм не подлежит оптимизации, поэтому пришлось прибегнуть к небольшим хитростям. Например, ищите похожие слова в ограниченном наборе слов с длиной +/- 2 относительно длины искомого слова. Я создал несколько дополнительных индексов для таблиц SQL и мне удалось сократить среднее время примерно до 8 секунд. Ожидание всей страницы в течение 8 секунд тоже слишком утомляет, поэтому я загрузил блок с похожими словами с помощью Ajax. Таким образом, страница отображалась сразу, и задерживался только блок, что было вполне приемлемо. Я уже думал, что все готово, когда пришло письмо от хостинг-провайдера, что он использует слишком медленный запрос, который замедляет работу других сайтов на этом общем хостинге, и они настаивали на его оптимизации. Поэтому мне пришла в голову идея, что данные для таких слов должны загружаться с удаленного сервера. Чтобы сделать это возможным, удаленный сервер должен иметь такую ​​же таблицу слов в своей базе данных. Я сделал автоматический скрипт для периодического копирования таблиц с одного сервера на другой. Таким образом, среди прочего, был получен еще один архив данных. Тогда все, что мне нужно было сделать, это заставить Ajax доступ к новому серверу. Здесь снова возникает проблема: из соображений безопасности Ajax не может получить доступ к домену, отличному от того, на котором он запущен. Чтобы обойти это ограничение, я использую следующую технику программирования: Ajax ссылается на сценарий SimilarClient.php, расположенный локально на сервере rechnik.info, который запрашивает сценарий с именем words.php на удаленном сервере. Там он ищет похожие слова в копии базы данных, и найденный результат отправляется в SimilarClient.php, который возвращает его как результат в Ajax. Кеширование запросов добавляется ко всей системе, локально на удаленном сервере — такой подход позволяет экономить дисковое пространство на хостинге за счет увеличения трафика. Первый поиск слова в словаре завершается через несколько секунд, но при каждом последующем поиске этого слова результат берется из кеша и становится почти мгновенным. Все это может показаться немного сложным, но вы можете увидеть, насколько хорошо это работает, на сайте Словаря.

Безопасность

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

Использую дополнительные механизмы защиты: удаленный сервер принимает запросы только с IP-адреса rechnik.info. Это повышает безопасность, но, к сожалению, этого недостаточно, потому что можно получать запросы с поддельным IP-адресом. Следующим шагом является добавление закодированного параметра в запрос GET. Таким образом, URL-адрес запроса выглядит так:

http://remote.domain.com/words.php?a=umacode=a4b25d814f32b2c852c3d71d3

Строка, переданная в переменной «code», кодируется скриптом SimilarClient.php, и только скрипт words.php знает, как ее декодировать и узнать, действительна ли она. Результат возвращается только в том случае, если значение является допустимым, в противном случае попытка сохраняется и сообщается администратору. Чтобы кто-то взломал это, у вас должен быть FTP-доступ к одному из двух файлов php.Следующим шагом будет использование HTTPS вместо HTTP, но здесь мы уже входим в область банковского программного обеспечения ??????

Я уверен, что многие люди спросят: «О чем все это? Что вы так много защищаете?»

Допустим, я тренируюсь ?????? Я не люблю оставлять все на волю случая и не иду на компромисс в вопросах безопасности. Я всегда прибираю и дважды страхуюсь. Я рекомендую вам научиться так работать.

SEO

У описанной системы есть и недостатки. С точки зрения SEO, ссылки в блоке Подобные слова невидимы для поисковых систем. Для того, чтобы сайт хорошо проиндексировался, вам понадобится карта сайта Google или дополнительный блок ссылок, например, со «случайными словами». Еще лучше будет блок с «Соседними словами», в котором ссылки всегда одинаковы для данной страницы.

Читайте так же:
Not found

Нам доверяют

Интернет магазин