可以从服务器启动浏览器缓存清理我的域吗?

时间:2014-02-03 06:40:57

标签: javascript asp.net-mvc iis browser-cache

我的域的浏览器缓存清理是否可以从服务器启动?

我看到很多人建议使用JavaScript清除浏览器缓存可能会带来安全挑战。但是如果我从部署站点的服务器上清除仅与我的域(www.example.com)相关的浏览器缓存呢?

我的要求是我应该能够从浏览器缓存中按需清除.js,.css和.jpg文件。我当前的框架没有设置为实现基于令牌的查询字符串,这样每个服务器端的更改都反映在这些资源的URL中,使浏览器相信它是一个新资源。当然,我可以做所有艰苦的工作来改变我的框架以反映这种变化,但是想知道是否已经有了实现这一目标的既定方法。

如果重要,那么我的环境基于Windows平台(ASP.Net MVC,IIS)。

2 个答案:

答案 0 :(得分:1)

  

当然,我可以做所有艰苦的工作来改变我的框架来反映   这种变化但是想知道是否已经有了既定的方法   实现这一目标。

不,你没有必要做所有的努力工作。 Microsoft ASP.Net Web Optimization framework会照顾它。您需要做的唯一想法是创建适当的bundle并在Global.asax中注册它们。

创建一个包 -

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        ScriptBundle bundle = new ScriptBundle("~/bundles/jquery");
        bundle.Include("~/Scripts/jquery-{version}.js");
        bundle.Include("~/Scripts/_references.js");

        bundles.Add(bundle);
    }
}

然后在Global.asax中注册 -

BundleConfig.RegisterBundles(BundleTable.Bundles);

在浏览器中呈现时,JQuery包将在其URL中具有版本。

<script src="/bundles/jquery?v=PsWsn1syKMUFBUcJusJPfq6HqYqANhiRR1uZJvzFJ-c1"></script>

如果您更改JQuery文件中的某些代码,则会将新版本号分配给该包。

此方法将负责浏览器在更改时获取更新文件。

答案 1 :(得分:0)

使用.htaccess来阻止浏览器缓存

 <FilesMatch "\.(html|htm|js|css)$">
   FileETag None
  <ifModule mod_headers.c>
   Header unset ETag
   Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
   Header set Pragma "no-cache"
   Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
  </ifModule>

我希望这会对你有所帮助.htaccess

相关问题