开发者

Dynamic CSS - caching problem?

开发者 https://www.devze.com 2023-03-18 19:54 出处:网络
I am using an HttpHandler to modify some CSS (only simple colours) on the fly, based on a technique I read about on SO.

I am using an HttpHandler to modify some CSS (only simple colours) on the fly, based on a technique I read about on SO.

Everything works just fine expect on the page where I am giving the user the option to specify the colours they want. Ideally as soon as the user saves his new colours and the page refreshes I want the new colours to be displayed. However they only come through when I explicitly press the browser reload or F5 key.

I appreciate that something somewhere (IIS or the browser) is doing some helpful caching of my stylesheet which 999 times in 1000 is exactly what I want, however on this particular page event I want to be able to force a reload and cause the HttpHandler to fire.

Anyone understand how this works and what I can do?

Things I have tried:

    Response.Clear();
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Expir开发者_高级运维es = -1;
    Response.Cache.SetExpires(DateTime.Now.AddDays(-1));

Because I am also using ASP.NET themes adding a querystring the stylesheet link isn't really a simple option.

Thoughts anyone?


This can be solved with technique that I use on my sites to cause reloads of assets once they have changed, such as after a deploy.

Append ?value to the end of your CSS url, where value corresponds to the version, or some unique value the browser hasn't seen yet. In my case I use the file modification time, however in your case since the CSS is dynamic on almost every pageload, I suggest generating some unique value.

Since the URL is always different, the browser will always reload it and it will never get put into its cache.

0

精彩评论

暂无评论...
验证码 换一张
取 消