Как запретить IE8 кэшировать данные карт OpenLayers (ASP.Net) - PullRequest
1 голос
/ 09 декабря 2011

Я работаю над представлением карт на основе OpenLayers, используя динамически генерируемый файл KML в C # / ASP.Net. В коде файла я определяю параметры строки запроса для вызова файла KML, который может выглядеть следующим образом:

/ макеты / KmlDataGenerator.aspx? Прививка = 2 & когорты = 2003% 7c2010 и секс = 3 & Xaxis = Kommune & landsdel = 100 & показать = Карта и тип данных = Прививка & extendedfilters = False

Эта строка URL вставляется в литерал KmlFileName в js-коде OpenLayers ниже:

vector = new OpenLayers.Layer.Vector("KML", {
        projection: wgs84,
        strategies: [new OpenLayers.Strategy.Fixed()],
        isBaseLayer: false,
        protocol: new OpenLayers.Protocol.HTTP({
            url: '<asp:Literal ID="KmlFileName" runat="server"/>',
            format: new OpenLayers.Format.KML({
                extractStyles: true,
                extractAttributes: true
            })
        })
    });

Проблема в том, что IE8 и более ранние версии, похоже, что-то кешируют - я точно не знаю, что именно, но карта никогда не появляется, пока я не нажму CTRL + F5 или вручную очистлю кеш в IE8. Проблема отсутствует в IE9, Firefox или Chrome ...

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

Будут оценены любые идеи!

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Я решил это с помощью коллеги.Оказалось, что несколько строк кода javascript для обработки проекции карты пришлось перенести в функцию document.ready ().Интересно, почему это было необходимо только в IE8, а не в других браузерах?Но в любом случае это решило проблему.

0 голосов
/ 09 декабря 2011

Я использовал это с той же целью в файле .ashx:

public override void ProcessRequest(HttpContext context) 
{
    context.Response.Cache.SetNoStore();

    // Execute code 

    context.Response.Write(<content>);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...