кэшировать канал или готовую страницу? - PullRequest
3 голосов
/ 08 мая 2011

Я только начал использовать SimpleXML, чтобы получать фид и отображать данные из этого фида XML на одной из моих веб-страниц.См. Мой первый пост https://stackoverflow.com/questions/5925368/how-to-use-the-weather-gov-xml-feed-on-a-website У меня есть базовые знания PHP, поэтому я могу упустить что-то базовое.

Если я понимаю, что происходит правильно, каждый раз, когда кто-то смотрит на мою страницу, прежде чем она отображаетphp, скрипт должен сначала пойти и получить канал.Затем он выполняет то, что я просил сделать с фидом, а затем отображает страницу.

Я бы подумал, что все было бы быстрее, если бы я кешировал фид или отформатировал фид и кешировал это.Что лучше кэшировать в необработанном фиде или форматировать фид и кэшировать результат?Как я могу пойти и о кэшировании?

Я надеюсь, что кто-то может указать мне направление обучения, которое научит меня, как кэшировать вещи с помощью php, или, возможно, у кого-то есть пример кода, из которого я мог бы поучитьсяи / или адаптироваться под мой проект?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 08 мая 2011

Google "простой учебник PHP кэша" или посмотрите на этот .

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

$html = '<h3>Weather View</h3>';

foreach( element in your xml feed){
$html .= 'Some more information';
}
//then when done
file_put_contents('weather_cache.txt', $html );

По сути, вы должны кешироватьсегмент HTML, который вы затем используете PHP, чтобы включить в нужное место на своих веб-страницах, возможно, с помощью file_get_contents ();

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

1 голос
/ 08 мая 2011

Если вы используете PHP для персонального веб-сайта, вы, вероятно, не сможете установить APC ((код операции)) (способ, если вы можете установить / использовать). Тогда мой совет - использовать что-то вроде redistogo (кеш), которое бесплатно для небольших сайтов.

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

Как вы говорите, вы должны кэшировать канал (redis). Лучший способ сделать это в автономном режиме (таким образом, пользователям не нужно ждать, пока ваш скрипт загрузит фид, который занимает много времени (относительное) ...) с помощью какого-то рода cronjob. Есть много бесплатных сайтов, которые над вами cronjobs как например http://www.onlinecronjobs.com/.

Я бы подумал, что все будет быстрее, если бы я был кешировать либо кормить или форматировать ленту и кеш тот. Что лучше кешировать сырье кормить или форматировать канал и кэшировать результат? Как мне кешировать либо

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

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

Я надеюсь, что кто-то может указать мне в направлении учебника, который научит меня, как кэшировать вещи с PHP или, может быть, у кого-то есть пример код, который я мог бы поучиться и / или адаптироваться к моему проекту?

Существует множество руководств по использованию redis . Например проектирование твиттер-клона . Если вы правильно выполните поиск в Google, вы найдете много результатов.

0 голосов
/ 08 мая 2011

Я рекомендую вам кешировать содержимое RSS-канала.
Там , вы можете узнать, как использовать APC, который может быть вашим кэшем кода операции и очень быстрым кэширом данных.

...