我的域的浏览器缓存清理是否可以从服务器启动?
我看到很多人建议使用JavaScript清除浏览器缓存可能会带来安全挑战。但是如果我从部署站点的服务器上清除仅与我的域(www.example.com)相关的浏览器缓存呢?
我的要求是我应该能够从浏览器缓存中按需清除.js,.css和.jpg文件。我当前的框架没有设置为实现基于令牌的查询字符串,这样每个服务器端的更改都反映在这些资源的URL中,使浏览器相信它是一个新资源。当然,我可以做所有艰苦的工作来改变我的框架以反映这种变化,但是想知道是否已经有了实现这一目标的既定方法。
如果重要,那么我的环境基于Windows平台(ASP.Net MVC,IIS)。
答案 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!