Большой RSS-канал. Как избежать замедления сервера при получении? - PullRequest
0 голосов
/ 05 января 2011

Я добавил канал RSS в магазине Zen-Cart, PHP 5.2, apache2.В магазине имеется около 25 000 товаров с их названием, описанием, ценой, изображением и т. Д.

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

Есть ли способ лучше справляться с большими RSS-лентами?Я всегда мог разделить его на 2 или 3 канала, но некоторым партнерам требуется один URL канала, чтобы получить все продукты за один раз.

Ответы [ 5 ]

3 голосов
/ 05 января 2011

Вы можете установить cron для записи RSS-канала в файловую систему каждые 5, 10, .... минут.Таким образом, файл уже подготовлен и его нужно просто открывать, а не обрабатывать каждый раз, когда его ударили.

1 голос
/ 05 января 2011

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

и применяется mod_deflate как

AddOutputFilterByType DEFLATE application/rss+xml

По сути, не следует добавлять слой php для обслуживания запроса RSS

0 голосов
/ 05 января 2011

Кажется, это больше проблема с памятью. Даже если он не рассчитан, при извлечении из кэша он сохраняется в переменной и занимает много памяти.

Напишите статический файл или увеличьте объем памяти вашего сервера.

0 голосов
/ 05 января 2011

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

0 голосов
/ 05 января 2011

Нет причин, по которым обслуживание файла из кэша должно занимать сколько-нибудь заметное время на сервере.Что-то не так с вашим кешированием.Или, возможно, вы видите тайм-ауты, когда кэш устарел, и в этом случае вам нужно будет обновлять кэш с помощью обновлений по расписанию, чтобы клиенты никогда не обращались к устаревшему кешу., кэшируйте его в файловой системе и позвольте Apache использовать его как статическую страницу.Если вы идете по этому пути, обязательно запишите новую версию во временную, а затем переименуйте ее на место (вы не хотите показывать частичное содержимое).В системах POSIX (Unix-like) переименование в том же разделе для замены файла является атомарным.

...