Передовой опыт использования сторонних API для электронной коммерции - PullRequest
2 голосов
/ 15 сентября 2009

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

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

Ответы [ 3 ]

1 голос
/ 17 октября 2009

В этом случае я бы определенно кэшировал результаты с сайта дистрибьютора в течение некоторого промежутка времени, а не нажимал бы их каждый раз, когда вы получаете запрос. Однако я не просто использовал бы общий 5-минутный или 30-минутный тайм-аут для всех записей кэша. Вместо этого я бы использовал некоторые эвристики. Если возможно, например, если ваше приложение написано на языке, подобном Python, вы можете прикрепить простой скрипт к каждому продукту, который реализует тайм-аут.

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

if product.popularityrating > 8 or product.lastqtyinstock < 20:
   cache.expire(productnum)
distributor.checkstock(productnum)

Это дает вам гибкость, к которой вы можете обратиться, если вам это нужно. Изначально вы можете установить все правила на что-то вроде:

 cache.expireover("3m",productnum)
 distributor.checkstock(productnum)

На самом деле, сценарий, вероятно, не будет включать вызов функции checktock, потому что это будет в основном приложении, но он включен здесь для контекста. Если Python кажется слишком тяжелым, чтобы включать только это небольшое количество гибкости, то взгляните на TCL, который был специально разработан для этого типа работы. Оба могут быть легко встроены в приложения C, C ++, C # и Java.

0 голосов
/ 01 октября 2009

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

Когда у вас есть эти ответы, здесь, конечно, много возможностей. Например, для сайта с низким трафиком, где важно правильно провести инвентаризацию, вы можете вызывать сторонний API при каждом вызове, но вернуться к некоторому альтернативному поведению (например, использовать кэшированные данные), если API не отвечает в течение определенного времени ожидания.

Иногда хорошо разработанные API-интерфейсы содержат подсказки относительно срока действия данных. Например, некоторые API-интерфейсы REST-over-HTTP поддерживают различные заголовки элемента управления HTTP Cache, которые можно использовать для указания периода действия или для извлечения данных только в том случае, если они изменились с момента последнего запроса.

0 голосов
/ 15 сентября 2009

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

Широко используется в филиале SRM (Управление взаимоотношениями с поставщиками).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...