уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Оказывается 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;

Интерфейс программы представлен на рисунке:

ps

И теперь нам остается только правильно получить и передать в процедуру 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 проверяемой страницы, жмем «Анализ» и любуемся результатом:

ps2

Мой блог набрал по тесту 84 из 100 – это значит, что возможностей для оптимизации у меня осталось не так уж и много. Если наберете 100 – будет здорово.

Вот такой получился небольшой но полезный для оптимизаторов и SEOшников API Page Speed Online.

Скачать исходник: Исходники —> API онлайн-сервисов —> Google API

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
2 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Andrey53
26/05/2011 00:45

Почему-то, не нашел ссылку на исходник в блоге, может я плохо так искал=(