В настоящее время я нахожусь в процессе написания небольшого плагина WordPress для загрузки ресурсов с запущенными обновлениями.Это означает, что я вызываю фиксированный URL-адрес конечной точки, например:
https://www.example.com/downloads/app/latest
Если этот URL-адрес вызывается, сервер доставляет самую последнюю версию запрошенного ресурса (например, исполняемое приложение).Название ресурса может отличаться, но оно может совпадать с более старой версией.Поэтому я хочу поставить рабочий последний измененный заголовок.
По сути, я получил заголовки для установки из этого вопроса: Принудительная загрузка файла с помощью php с использованием header ()
$quoted = sprintf('"%s"', addcslashes(basename($file), '"\\'));
$size = filesize($file);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $quoted);
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Pragma: public');
header('Content-Length: ' . $size);
Теперь мне интересно как правильно установить заголовки так, чтобы браузер знал, изменился ли ресурс .Предполагая, что у меня есть дата последнего изменения запрошенного ресурса, я предполагаю:
header('Cache-Control: must-revalidate');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s T', $last_modified_time));
Если я понятия не имею, что такое дата последнего изменения, я бы поставил:
header('Cache-Control: no-cache');
header('Expires: 0');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s T'));
Это правильно (особенно заголовки) или я что-то упускаю?Не уверен из-за большого количества настроек для управления кэшем, даты модификации, срока действия и, возможно, других.