
Когда я вношу небольшие изменения в свой веб-сайт и загружаю их, обычно требуется несколько минут, чтобы эти изменения отразились в реальном времени. Это начало происходить только после того, как я установил новую систему Debian через Google Compute Engine.
Я исключил, что у меня есть код, который кэширует его, но возможно ли, что PHP 5.5.28 или Debian могут кэшировать файлы? Я также проверил, чтобы убедиться, что это не браузер, и использовал опцию Chrome, чтобы не кэшировать файлы в инструментах разработчика.
решение1
Вы используете PHP 5.5.28, и по моему опыту любой, кто переходит с PHP 5.3 или 5.4 на PHP 5.5, должен знать о новом встроенномOPcache (кэш операций)включено по умолчанию.
Если вы когда-либо использовалиAPC (альтернативный PHP-кэш), новый встроенный OPcache работает практически так же и удобен для производственных целей при работе со сложным кодом, но его включение по умолчанию может вас напрягать, если вы привыкли загружать файлы и видеть изменения, которые отображаются немедленно.
Этот сайт делает хорошую работуобъяснения того, что такое OPcache и как его настроить. Но если вам пока не нужен OPcache, просто откройте свой PHP ini-файл вот так; я предпочитаю использоватьnano
но вы можете свободно использовать любой текстовый редактор, который вам нравится:
sudo nano /etc/php5/apache2/php.ini
Найдите строку, которая гласит:
opcache.enable=1
И просто отключите его, изменив эту строку на:
;opcache.enable=0
Перезапустите Apache и теперь PHP 5.5 не будет использовать OPcache. И честно говоря, включение такого кэша должно быть задачей системного администратора и его знания того, как работает код и как реагирует сервер
Если ваш сайт на основе PHP достаточно легкий, OPcache может оказаться излишним, ненужным и даже мешать.
Но если вам нужен OPcache, но также необходимо регулярно обновлять файлы PHP, возможно,может помочь настройка значений конфигурации OPcache. Настройки по умолчанию примерно такие:
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
Ключевой момент, который я вижу в этой конфигурации и который может помешать ожидаемому обновлению, этоopcache.revalidate_freq
:
Как часто проверять временные метки скрипта на наличие обновлений (в секундах). 0 приведет к тому, что OPcache будет проверять наличие обновлений при каждом запросе.
Значение по умолчанию в 60 секунд вполне приемлемо, но мне кажется, что уменьшение этого opcache.revalidate_freq
значения до 5 секунд может быть более удобным способом использовать преимущества OPcache, но при этом иметь разумное окно проверки обновлений, чтобы не спотыкаться из-за простых обновлений файлов.