Вам следует использовать пользовательскую перспективу, чтобы пересмотреть эту проблему, спросите себя:
Не хотите ли подождать 30 секунд для загрузки веб-страницы?
Очевидно ты не хочешь
Как я могу ускорить загрузку страницы?
Вы зависите от внешнего ресурса (google api)
, а не просто звонитеодин раз, но 26 раз асинхронно
Итак, если вы измените вышеприведенное синхронно,
общее время уменьшится с 26 до 1 (с учетом расходов на пропускную способность сети)
Посмотритена http://php.net/manual/en/function.curl-multi-exec.php,
вот первый шаг оптимизации
Если вы сделаете вышеуказанное,
ваше время, потраченное на внешний ресурс, может сократиться до 95%
Будет ли это достаточно хорошо?
Очевидно, еще нет
Любой вызов на внешний ресурс не является надежным, даже если Google
, если сеть не работает, DNS не разрешен,ваша страница тоже падает
Как это предотвратить?
Вы нуждаетесьed кеш, в основном логика такова: -
- поиск существующего кеша, если он найден, возврат из кеша
- , если нет, запросить google api синхронно (от a до z)
- сохранить результат в кеше
- вернуть результат
Однако процесс по требованию все еще не идеален (первый пользователь должен выполнить запрос дольше всего),
если вам известна перестановка пользовательского ввода (надеюсь, не такая уж и большая),
вы можете использовать планировщик (cronjob) для периодического извлечения результата из Google API,
и сохранения результата локально