Я могу вызвать обновление своего файла таблицы стилей?

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

char * returnArray(char *arr, int size) {
    char *new_arr = malloc(sizeof(char) * size);
    for(int i = 0; i < size; ++i) {
        new_arr[i] = arr[i];
    }
    return new_arr;
}

int main() {

    char arr[7]= {1,0,0,0,0,1,1};
    char *new_arr = returnArray(arr, 7);

    // don't forget to free the memory after you're done with the array
    free(new_arr);

}
28
задан GilShalit 6 August 2009 в 16:05
поделиться

11 ответов

Популярный способ «взлома кеша» - добавить параметр в исходный код css. Обычно используется временная метка. Я предпочитаю время последнего изменения файла, т.е. filemtime () в PHP. Я уверен, что есть функция asp.net, которая даст вам это.

Тогда ваш тег CSS станет:

<link rel="stylesheet" type="text/css" media="screen" href="/main.css?123456789"/>

с изменением параметра запроса при каждом обновлении файла CSS.

53
ответ дан 28 November 2019 в 02:20
поделиться

Нажмите CTRL + F5 , чтобы полностью обновить все на вашей веб-странице, включая скрипты и таблицы стилей.

Кроме того, вы можете включить таблицы стилей, которые будут обслуживаться, со страницы динамического сервера [php / asp.net] и Response.Expires = -1, что заставит клиента явно загружать css при каждом запросе HTTP-GET. Вы также можете сделать это в настройках вашего веб-сервера для типов MIME CSS.

18
ответ дан this. __curious_geek 14 October 2019 в 09:32
поделиться

Я не уверен во всех браузерах, но в IE8 вы можете использовать инструменты разработчика ...

Перейти к:

Инструменты -> Инструменты разработчика (F12)

Затем (пока на вашей странице) в Инструментах разработчика:

Кэш -> Всегда обновлять с Сервер

2
ответ дан Justin Niessner 14 October 2019 в 09:32
поделиться

Для ASP.NET код позади (вы можете поместить это в служебный класс или главную страницу):

public static string GetTimestampedUrl(string virtualPath)
{
  var realPath = HostingEnvironment.MapPath(virtualPath);
  var file = new FileInfo(realPath);

  return VirtualPathUtility.ToAbsolute(virtualPath) + "?" + file.LastWriteTime.ToFileTime();
}

А затем на вашей странице:

<link href="<%= GetTimestampedUrl("~/screen.css") %>" rel="stylesheet" type="text/css" media="screen" />
7
ответ дан Ian Kemp 14 October 2019 в 09:32
поделиться

Для пользователей Wordpress ниже приведен код

<link rel="stylesheet" href="<?php echo get_bloginfo('stylesheet_url')."?d=".date( 'Ymd', time()); ?>" type="text/css" media="screen" />

Или лучше

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); echo '?' . filemtime( get_stylesheet_directory() . '/style.css'); ?>" type="text/css" media="screen, projection" />

Приветствия!

2
ответ дан foxybagga 14 October 2019 в 09:32
поделиться

Чтобы продолжить ответ Яна Кемпа , в котором используется LastWriteTime рассматриваемой таблицы стилей, я написал помощник MVC для вывода тега <link> со встроенным параметром очистки кэша.

Код

public static class CssLinkHelper
{
    public static IHtmlString StyleSheet(this HtmlHelper helper, string stylesheetname)
    {
        // define the virtual path to the css file (see note below)
        var virtualpath = "~/" + stylesheetname;
        // get the real path to the css file
        var realpath = HostingEnvironment.MapPath(virtualpath);
        // get the file info of the css file
        var fileinfo = new FileInfo(realpath);

        // create a full (virtual) path to the css file including a cache busting parameter (e.g. /main.css?12345678)
        var outputpath = VirtualPathUtility.ToAbsolute(virtualpath) + "?" + fileinfo.LastWriteTime.ToFileTime();
        // define the link tag for the style sheet
        var tagdefinition = string.Format("<link rel=\"stylesheet\" type=\"text/css\" href=\"{0}\" />", outputpath);

        // return html string of the tag
        return new HtmlString(tagdefinition);
    }
}

Использование

@Html.StyleSheet("main.css")

Выход

<link rel="stylesheet" type="text/css" href="/main.css?131393346850223541" />

Заметка

Если вас интересует часть var virtualpath = "/~" + ... и вы думаете, почему бы просто не передать ее как "~/main.css"? Я реализовал эту функцию таким образом, потому что все мои CSS-файлы находятся в общей папке (/ assets), и помощник будет префикс моего вывода с общим именем папки, т.е. /assets/main.css?131393346850223541

0
ответ дан Community 14 October 2019 в 09:32
поделиться

Держите ли вы браузер открытым между изменениями? Часто простое закрытие всех окон браузера между внесением изменений в файл CSS указывает браузеру загрузить новую копию.

0
ответ дан 28 November 2019 в 02:20
поделиться

Один из приемов - добавить параметр QueryString в ссылку на вашу таблицу стилей

Что означает '?' сделать в ссылке Css?

3
ответ дан 28 November 2019 в 02:20
поделиться

Самый простой способ - отключить кеширование в вашем браузере. Если вы не можете или не хотите этого делать, вы можете нажать ctrl + f5.

Возможно, ваш сервер или приложение asp также кэширует. Вы можете отключить это в web.config или перезапустить сервер разработки, чтобы убедиться, что последняя версия вашего файла показана пользователю.

1
ответ дан 28 November 2019 в 02:20
поделиться

Я использую этот трюк:

<link rel="stylesheet" type="text/css" href="cssfile.css?t=<%= DateTime.Now.Ticks %>" media="screen" />
10
ответ дан 28 November 2019 в 02:20
поделиться

Это классическая проблема. У вас есть множество доступных решений:

  1. Вероятно, самый простой способ - настроить ваш веб-сервер для серверных файлов CSS как никогда не кешируемый / истекающий немедленно. Очевидно, вы не захотите этого в производственной среде. С IIS это очень легко сделать.
  2. Добавьте случайное значение к имени включаемого файла, например Site.css? V = 12. Это то, что SO делает для своих включений. Я делаю это дома, чтобы на машине разработки параметр изменяется каждый раз (guid), когда файл обслуживается, но при развертывании он использует номер версии svn. Немного сложнее, но надежнее.
  3. Я уверен, что намного больше
2
ответ дан 28 November 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: