У меня есть страница PHP, настроенная для генерации довольно большого набора данных, сгенерированных из запросов MYSQL.
Используя эти данные, будет создано определенное количество заголовков таблиц (в формате html) в зависимости от количества пользователей, которые в настоящее время находятся в системе.
foreach($usersFromMYSQL as $row)
{
echo
"<th>$someUserData
<th>Col Y
<th>Col Z
";
}
Затем он также заполнит таблицу определенным количеством строк (в формате html), зависящим от количества событий, происходящих в системе.
foreach ($eventsFromMYSQL as $row)
{
echo
"<tr>
";
foreach($usersfromMYSQL as $inner_row)
{
echo
"<td>$someUserSpecificEventData1
<td>$someUserSpecificEventData2
<td>$someUserSpecificEventData3
";
}
}
Этот код сильно упрощен, но идентичен по формату моему веб-сайту.
Моя проблема в том, что я запускаю свой веб-сайт на Raspberry PI, и время загрузки этой страницы (как ожидается) медленное из-за количества пользователей и событий в базе данных. В настоящее время каждый раз, когда вы заходите на страницу, все эти данные запрашиваются снова, и, по крайней мере, насколько мне известно, не существует никакой формы кэширования или запоминания.
Данные могут меняться день ото дня, а это означает, что если страница, где должна быть кэширована, я бы хотел, чтобы она оставалась кэшированной только до конца этого дня, так как следующий день может иметь разные результаты.
Мой вопрос заключается в том, какие существуют решения для предотвращения повторной загрузки этих данных при каждом посещении страницы, но следует ли гарантировать, что она по крайней мере перезагружается один раз в день?
Я предполагаю, что вы используете систему MVC, тогда это может быть сделано так:
Обратите внимание, что после того, как страница сгенерирована на текущую дату, скрипт не должен генерировать страницу снова.
РЕДАКТИРОВАТЬ 1
Если вы используете один файл,
<?php
$file_name = date('d_m_Y').".php";
if(file_exists($file_name))
{
//load
$page_data = file_get_contents($file_name);
}
else
{
//generate page here
//
$page_data = "....... YOUR HTML PAGE DATA HERE ........ ";
//save it
file_put_contents(date('d_m_Y').".php");
}
//show page to user
echo $page_data;
?>
Других решений пока нет …