Вопрос или проблема
Я использую get_avatar_url(), чтобы получить изображение gravatar пользователя по умолчанию.
get_avatar_url( $user_id );
В случае отсутствия изображения я предоставлю изображение по умолчанию, используя массив аргументов.
$arg = array (
'default' => get_home_url() . '/wp-content/uploads/.../profile_image_0.jpg',
);
$avatar = get_avatar_url( $user_id , $arg );
Все работает нормально, пока мне не нужно заменить изображение. Проблема в том, что служба “https://i1.wp.com” кеширует изображение.
Итак, вопрос в том, как сбросить или заменить изображение, не меняя имя файла?
Вставьте ниже код в файл function.php
function theme_custom_avatar_url($url, $idOrEmail, $args){
return get_home_url() . '/wp-content/uploads/.../profile_image_0.jpg';
}
add_filter('get_avatar_url', 'theme_custom_avatar_url', 10, 3);
.
Ответ или решение
Если вы хотите сбросить или заменить изображение по умолчанию, предоставляемое функцией get_avatar_url()
, но сталкиваетесь с проблемой кэширования из-за использования сервиса, такого как https://i1.wp.com, вам следует рассмотреть следующие шаги.
Анализ проблемы:
При использовании функции get_avatar_url()
для получения изображения Gravatar пользователя, если изображение не установлено, вы можете задавать его с помощью параметра 'default'
. Однако, если вам необходимо обновить это изображение, кэширование на стороне сервиса может стать проблемой, так как изображение не обновляется мгновенно.
Решение:
-
Изменение URL для кэширования:
Для того чтобы принудительно обновить изображение, даже без изменения фактического файла изображения, вы можете изменить URL. Это можно сделать, добавив параметр, связанный со временем, чтобы сделать URL уникальным. Этот подход и решает проблему кэширования, так как каждый раз генерируется новый запрашиваемый путь.
function theme_custom_avatar_url($url, $idOrEmail, $args) { return get_home_url() . '/wp-content/uploads/.../profile_image_0.jpg?' . time(); } add_filter('get_avatar_url', 'theme_custom_avatar_url', 10, 3);
В данном коде к URL изображения добавляется динамический параметр времени. Это гарантирует, что каждый запрос будет идентифицироваться как новый, и кеш не будет использоваться.
-
Очистка кэша на сервере:
Если обновление URL не решает проблему, рекомендуется проверить запущенные на сервере механизмы кэширования. Очистите кэш статических файлов и кэш объектов, чтобы гарантировать восприятие новых изменений.
-
Проверка настроек CDN и HTTP кеширования:
Проверьте, используется ли Content Delivery Network (CDN) или механизмы HTTP кеширования в вашем сайте. Часто именно там данные могут сохраняться без обновлений.
Заключение:
Через сознательное управление способами обновления и изменения URL изображений, вы можете эффективно обойти кэширование, обеспечивая отображение актуального изображения. Используйте рекомендуемый способ для постоянного обновления пользовательского интерфейса вашего сайта.