Оптимизация

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

Чаше всего в оптимизации нуждаются файлы с большим количеством направлений обмена, именно в таких файлах будет заметно существенное уменьшение их объема. Для файлов с несколькими направлениями обмена оптимизация, скорее всего не потребуется.


Объединение файлов с разных сайтов в один

Когда возникает необходимость добавить новые направления обмена на текущий сайт но, это невозможно сделать из-за запретов некоторых платежных систем то, в таком случае, приходится регистрировать новый домен и запускать новый сайт, который является копией текущего но, с отличием всего в несколько направлений обмена. Поскольку, некоторые направления обмена для обоих сайтов одинаковые, как по курсу, так и по резерву то, в данном случае их экспортные файлы также содержат некоторые, одинаковые наборы данных. Этот факт можно использовать, что бы оптимизировать экспортные файлы, путем их объединения в один, общий для обоих сайтов файл.

Общий для разных сайтов файл формируется как обычно но, с некоторыми особенностями. Если направление обмена есть у обоих сайтов, при этом, информация о нем также совпадает то, оно добавляется в файл как обычно, если же не то, в секции с информацией для такого направления обмена, указывается ключ domains, значением которого является список доменов сайтов, только у которых есть это направление обмена. Подобный подход, позволяет объединять файлы как с двух, так и более сайтов.

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

Например, имеется два сайта: site1.com и site2.com, и 3 направления обмена:

  1. WMZ => WMR
  2. PMUSD => YAMRUB
  3. QWRUB => YAMRUB

На сайте site1.com обмены производятся по направлениям: 1 и 3, а на сайте site2.com по направлениям: 2 и 3. Таким образом, направление обмена 3, является общим для обоих сайтов, а это значит, что файлы можно объединить в один, с таким содержимым:

  1. {
  2.   "from":
  3.   {
  4.     "WMZ":
  5.     {
  6.       "to":
  7.       {
  8.         "WMR":
  9.         {
  10.           ...,
  11.           "domains":
  12.           [
  13.             "site1.com"
  14.           ]
  15.         }
  16.       }
  17.     },
  18.     "PMUSD":
  19.     {
  20.       "to":
  21.       {
  22.         "YAMRUB":
  23.         {
  24.           ...,
  25.           "domains":
  26.           [
  27.             "site2.com"
  28.           ]
  29.         }
  30.       }
  31.     },
  32.     "QWRUB":
  33.     {
  34.       "to":
  35.       {
  36.         "YAMRUB": {...}
  37.       }
  38.     }
  39.   }
  40. }

Группировка ключей

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

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

Группировать можно только ключи, находящиеся в секции с информацией о направлении обмена.

В зависимости от того, в какие секции могу быть перемещены ключи, определяется уровень их группировки. Исходя из этого, можно определить такие уровни группировки:

1
соответствует секции группы направлений обмена тоесть, вынесенные ключи будут находиться в одной секции, рядом с ключом to;
2
соответствует секции направлений обмена тоесть, вынесенные ключи будут находиться в одной секции, рядом с ключом from.

Полный список ключей, которые можно группировать и уровни их группировки выглядит так:

options
1 и 2 уровни;
domains
1 уровень;
in_fee
1 уровень;
in_min_amount
1 уровень.

Выносить можно только ключи с одинаковыми значениями или одинаковые значения ключей (ключ options).

Пример группировки ключей:

  1. {
  2.   "from":
  3.   {
  4.     "WMZ":
  5.     {
  6.       "to":
  7.       {
  8.         "WMR": {...},
  9.         "WMU": {...}
  10.       },
  11.       "domains":
  12.       [
  13.         "site1.com"
  14.       ]
  15.     }
  16.     "PMUSD":
  17.     {
  18.       "to":
  19.       {
  20.         "YAMRUB": {...},
  21.         "QWRUB": {...}
  22.       },
  23.       "domains":
  24.       [
  25.         "site2.com"
  26.       ],
  27.       "options":
  28.       [
  29.         "auth"
  30.       ]
  31.     }
  32.   },
  33.   "options":
  34.   [
  35.     "manual"
  36.   ]
  37. }

Как видно из примера выше, все обмены WMZ осуществляются только на сайте site1.com, а направления обмена из PMUSD, осуществляются только на сайте site2.com причем, обмен на сайте site2.com можно совершить только после прохождения авторизации (или регистрации).

Все обмены, на обоих сайтах, осуществляются в ручном режиме.


Использование псевдонимов валют

Узнать больше о псевдонимах валют можно на этой странице, здесь же будет описано, как очень просто и эффективно провести оптимизацию с использованием псевдонимов.

Обычно разработчики сайтов, во время их разработки, для хранения часто используемых данных используют базы данных (БД). К часто используемым данным можно отнести и список валют, он обычно хранится в БД в виде таблицы, следовательно, у каждой валюты, кроме ее сигнатуры имеется еще и внутренний (системный) номер, который удобнее все использовать для разработки сайта, ведь числом проще оперировать.

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

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

Пример такой оптимизации приведен ниже:

  1. {
  2.   "currencies":
  3.   {
  4.     "aliases":
  5.     {
  6.       "1": "PMUSD",
  7.       "2": "YAMRUB",
  8.       "3": "QWRUB"
  9.     },
  10.     "amounts":
  11.     {
  12.       "2": 41233.89,
  13.       "3": 27498.38
  14.     }
  15.   },
  16.   "from":
  17.   {
  18.     "1":
  19.     {
  20.       "to":
  21.       {
  22.         "2": {...},
  23.         "3": {...}
  24.       }
  25.     }
  26.   }
  27. }

Как видно из примера выше, был указан список псевдонимов из трех сигнатур валют: PMUSD, YAMRUB и QWRUB. Это дало возможность использовать вместо сигнатур их номера, это можно увидеть в секции резервов и направлений обменов.

В секции псевдонимов (aliases) и резервов (amounts) валют указаны только те валюты, которые участвуют в направлениях обмена.

Как можно заметить, в файле помимо оптимизации с помощью псевдонимов использовалась еще и оптимизация резервов валют.