Я действительно не знаю, как вы кешируете схему, поэтому ответ не может быть точным.Во-первых: помните, что APC использует разделяемую память сервера, и в этом случае, если у вас несколько серверов, все они будут получать по крайней мере один раз базу данных для получения данных.Если вы пытаетесь сохранить для каждого столбца, вы должны быть уверены, что создали какую-то блокировку, иначе у вас будут условия гонки, поскольку, возможно, при сохранении столбца любой другой может измениться.Я рекомендую вам полностью сохранить строку, выполнив:
<?php
foreach ($row = $mylsql->get_row()) {
$key = 'content_' . $row['id'];
apc_store($key, $row);
}
Но с другой стороны, это означает, что если у вас есть 1000 статей, вы сохраните их в кеше, и, возможно, многие из них не будут прочитаны.вообще.
В этом случае я бы порекомендовал вам использовать отложенную загрузку :
<?php
$id = $_GET['id'];
$key = 'content_' . $id;
$data = apc_fetch($key);
if (!is_array($data)) {
// call mysql here
$data = $mylsql->get_row();
apc_store($key, $data);
}
// your script here using $data
таким образом, вы кэшируете только тот контент, который часто поражается.
С другой стороны, пожалуйста, следуйте вашему аннулированию кэша , чтобы избежать хранения старых данных в кэше.