Кэширование плоских файлов с нулевым временем простоя - PullRequest
1 голос
/ 01 декабря 2011

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

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

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

РЕДАКТИРОВАТЬ:

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

RewriteCond %{HTTP_COOKIE} (user)
RewriteRule (.*)? - [S=3] # Skip the below 2 lines if the above test passes
RewriteRule ^$ app/webroot/cache_static_html/cache_static_popular_results_1.php [L]
RewriteRule ^popular/page:([2-9])$ app/webroot/cache_static_html/cache_static_popular_results_$1.php [L]

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

Symfony страдает от того же недуга, когда вы очищаете кеш.Чтобы обойти эту проблему, мы предварительно прогрели кеш.Рассмотрим следующее:

  • Создать временный каталог (убедитесь, что установлены правильные разрешения): cache_temp

  • Добавить код для распознавания триггера.Если триггер доступен, установите cache dir в cache_temp (вместо cache_current).Пример триггера через http: http://mydomain.com? Prewarm = 1

  • Код будет знать для создания всех файлов кэша в cache_temp, а не cache_current

  • Переименовать cache_current в cache_old

  • Переименовать cache_temp в cache_current

  • Удалить cache_old

0 голосов
/ 01 декабря 2011

Я бы предложил использовать решение memcache.кажется, вы могли бы написать свои кеши довольно быстро и не использовать метод плоских файловИди в память!

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