Оказывается Google открыл в своей лаборатории ещё два API: Tasks API (управление списками задач) и API для оптимизаторов – Online Page Speed.
Что касается первого API, то для Delphi он пока без вариантов, т.к. в работе надо использовать на выбор одну из трех библиотек – Java, Python или PHP (по-моему первый API гугла. где можно использовать PHP прямо “из коробки”). Можно было бы поторчать немного и портировать одну из библиотечек под Delphi, но весна->сессия->заморочки. Поэтому решил пока посмотреть второй API. Жаль конечно, что нельзя использовать IP*Works для работы с API (у меня только базовый вариант без SSL) так бы можно было глянуть работу с JSON.
Итак, для чего нужен Online Page Speed API? С помощью этого API можно оценить скорость загрузки страниц сайта, а также получить подробный отчёт по загрузке – размер страницы, отдельных элементов и т.д. В зависимости от полученного результата оптимизатор может что-то “подкрутить” на сайте, увеличив скорость его загрузки, а скорость загрузки сейчас, говорят, влияет на позицию сайта в выдаче Google. Вот такая вот загогулина.
Для работы с API нам потребуется ключ, которые можно получить в консоли Google. Для примера протестируем страницы блога WebDelphi.ru.
В начале коротко о том как работает API. Здесь все оказалось элементарно и просто – надо отправить всего один GET на URL https://www.googleapis.com/pagespeedonline/v1/runPagespeed
В URL допускается использовать следующие параметры:
callback – имя callback-функции. Удобно использовать, например, при использовании SuperObject
key – ключ API. Обязательный параметр
prettyprint – если параметр равен True, то документ вернется в “печатной” форме, т.е. с использованием отступов, разрывами строк и т.д. По умолчанию True.
userIp – IP-адрес сайта, который использует API. Параметр используется, когда запросы к API лимитируются по IP и для нас он сегодня бесполезен.
url – URL страницы, которую необходимо проверить на скорость. Обязательный параметр
locale – локаль в которой необходимо выводить результаты теста. По умолчанию EN_en, можно установить и русский язык.
strategy – стратегия анализа. Анализировать страницы можно с целью оптимизации для ПК (значение desktop) и для мобильных устройств (значение mobile). По умолчанию desktop.
rule – правила анализа. Сегодня этот параметр использовать не будем.
Итак, наш цель – отправить запрос, получить документ в формате JSON и распарсить этот документ. Для работы будем использовать Synapse + SuperObject. Открываем Delphi, создаем новый проект и подключаем в uses следующие модули:
- httpsend
- ssl_openssl
- superobject
Вначале напишем метод для обработки JSON-документа. Будем получать только основную информацию по странице. Вид процедуры будет следующий:
procedure response(const This, Params: ISuperObject; var Result: ISuperObject); begin case Params.I['responseCode'] of 200: begin with fMain do begin memolog.Lines.Add('Количество ресурсов ' + Params.S['pageStats.numberResources']); memolog.Lines.Add('Количество хостов ' + Params.S['pageStats.numberHosts']); ... другие основные характеристики страницы lbScore.Caption:=Params.S['score']; end; end else ShowMessage('Ошибка'); end; end;
Интерфейс программы представлен на рисунке:
И теперь нам остается только правильно получить и передать в процедуру response() JSON-документ с данными по странице:
const cURL = 'https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=%s&key=%s&callback=response'; procedure TfMain.btnGetClick(Sender: TObject); var Data: TStringStream; o: ISuperObject; begin with THTTPSend.Create do begin if HTTPMethod('GET', Format(cURL, [edTestUrl.Text, edURL.Text])) then begin Data := TStringStream.Create; try Data.LoadFromStream(Document); o := so; o.M['response'] := response; o[Data.DataString]; finally Data.Free end; end; end; end;
Запускаем программку, записываем в первое поле ключ API, во второй — URL проверяемой страницы, жмем «Анализ» и любуемся результатом:
Мой блог набрал по тесту 84 из 100 – это значит, что возможностей для оптимизации у меня осталось не так уж и много. Если наберете 100 – будет здорово.
Вот такой получился небольшой но полезный для оптимизаторов и SEOшников API Page Speed Online.
Книжная полка
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
|
||
Название: О чем не пишут в книгах по Delphi
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
|
Почему-то, не нашел ссылку на исходник в блоге, может я плохо так искал=(
Все правильно — я просто забыл файлик прицепить :) Теперь есть