Подтвердить что ты не робот

Версии файлов CSS с такой строкой запроса, как Stackoverflow?

Если вы посмотрите на источник Stackoverflow.com, вы увидите ссылку на их файл css:

<link href="/Content/all.min.css?v=2383" rel="stylesheet" type="text/css" />

Как это сделать, чтобы они могли передавать версию через строку запроса и иметь правильный файл CSS?

4b9b3361

Ответ 1

Этот пример (пример PHP) объясняет вам идею этого. В принципе, вы могли бы создать временную метку в последний раз, когда вы изменили файл. Таким образом, каждый раз, когда вы меняете свой CSS, запрос изменяется и "заставляет" браузер загружать новую версию. Это справедливо для файлов CSS и JS.

Пример ASP.NET:

public static string GetBreaker(string fileName)
{
    string cacheBreaker = null;
    try
    {
        if (fileName.StartsWith("~"))
        {
            fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName.Remove(0));
        }
        cacheBreaker = File.GetLastWriteTime(fileName).ToFileTime().ToString();
    }
    catch { }

    return string.IsNullOrEmpty(cacheBreaker) ? string.Empty : string.Format("?cachebreaker={0}", cacheBreaker);
}

И вы вызываете этот метод в своем MasterPage таким образом:

<link href="<%= this.ResolveClientUrl("~/CSS/style.css") %><%=CacheBreaker.GetBreaker("~/CSS/style.css") %>"
            rel="stylesheet" type="text/css" />

Ответ 2

Так что ваш браузер не кэширует файл css. И использование номера версии удобно, так как файл css мог быть изменен в каждой версии.

Это не способ вызвать правильный файл css. Файл всегда один и тот же, но номер версии заставляет ваш браузер думать иначе и снова получать его.

Ответ 3

Если вы хотите знать, как это делается, они вскоре упомянули об этом в предыдущей записи в блоге: это делается автоматически по их процессу сборки. См. это сообщение в блоге (3-й пункт).

К сожалению, нет никаких подробностей, но, возможно, вы можете получить дополнительную информацию, комментируя это сообщение в блоге или связавшись с командой stackoverflow.

Ответ 4

Было бы проще просто изменить имя файла каждый раз, когда он будет изменен для достижения того же эффекта.

file001.css
file002.css

У меня такое ощущение, что сохранение имени файла одинаково и добавление ?ver=1234 заключается в упрощении управления исходным кодом.