我正在修改网站的外观(CSS修改)但由于恼人的持久缓存而无法在Chrome上看到结果.我试过Shift+刷新但它不起作用.
如何暂时禁用缓存或以某种方式刷新页面以便我可以看到更改?
browser caching google-chrome browser-cache google-chrome-devtools
我最近在Chrome中发现了这个新功能:

我可以弄清楚选项1和选项3之间的区别,并且选项2可能介于两者之间,但我无法在任何地方找到更精确的信息.
有人知道3个选项中每个选项的确切行为吗?
看起来如果我使用加载动态内容$.get(),结果会缓存在浏览器中.
在QueryString中添加一些随机字符串似乎解决了这个问题(我使用new Date().toString()),但这感觉就像一个黑客.
有没有其他方法来实现这一目标?或者,如果唯一的字符串是实现这一目标的唯一方法,除了以外的任何建议new Date()?
如何为我的网站启用浏览器缓存?我只是把cache-control:public放在我的标题中的某个地方吗?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
Cache-Control:public;
>
Run Code Online (Sandbox Code Playgroud)
我正在使用最新版本的XAMPP开发最新版本的PHP.
我在AngularJS中缓存部分问题.
在我的HTML页面中,我有:
<body>
<div ng-view></div>
<body>
Run Code Online (Sandbox Code Playgroud)
我的部分加载的地方.
当我在部分更改HTML代码时,浏览器仍会加载旧数据.
有没有解决方法?
我正在寻找一种方法来禁用整个ASP.NET MVC网站的浏览器缓存
我找到了以下方法:
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)
还有一个元标记方法(它对我不起作用,因为一些MVC动作通过Ajax发送部分HTML/JSON,没有头部元标记).
<meta http-equiv="PRAGMA" content="NO-CACHE">
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种简单的方法来禁用整个网站的浏览器缓存.
浏览器(IE和Firefox)每次页面刷新时都会解析链接的javascript文件吗?
他们可以缓存文件,因此我猜他们不会每次都尝试下载它们,但由于每个页面基本上是分开的,我希望它们可以拆除任何旧代码并重新解析它.
这是低效的,虽然完全可以理解,但我想知道现代浏览器是否足够聪明以避免站点内的解析步骤.我在想一个网站使用javascript库的情况,比如ExtJS或jQuery等.
当我访问chesseng.herokuapp.com时,我得到一个看起来像的响应头
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/css
Date:Tue, 16 Oct 2012 06:37:53 GMT
Last-Modified:Tue, 16 Oct 2012 03:13:38 GMT
Status:200 OK
transfer-encoding:chunked
Vary:Accept-Encoding
X-Rack-Cache:miss
Run Code Online (Sandbox Code Playgroud)
然后我刷新页面然后得到
Cache-Control:private
Connection:keep-alive
Date:Tue, 16 Oct 2012 06:20:49 GMT
Status:304 Not Modified
X-Rack-Cache:miss
Run Code Online (Sandbox Code Playgroud)
所以看起来缓存工作正常.如果它适用于缓存,则Expires和Cache-Control的重点是:max-age.更令人困惑的是,当我在https://developers.google.com/speed/pagespeed/insights/上测试该页面时,它告诉我"利用浏览器缓存".
我一直在查看HTML 5样板模板(来自http://html5boilerplate.com/),并注意到"?v=1"在引用CSS和Javascript文件时使用URL.
"?v=1"在链接和脚本标记中附加到CSS和Javascript URL的作用是什么?"?v=1"(示例来自以下示例:) js/modernizr-1.5.min.js.有这样的原因吗?来自他们的样本index.html:
<!-- CSS : implied media="all" -->
<link rel="stylesheet" href="css/style.css?v=1">
<!-- For the less-enabled mobile browsers like Opera Mini -->
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
<!-- All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects -->
<script src="js/modernizr-1.5.min.js"></script>
<!------ Some lines removed ------>
<script src="js/plugins.js?v=1"></script>
<script src="js/script.js?v=1"></script>
<!--[if lt IE 7 ]>
<script src="js/dd_belatedpng.js?v=1"></script>
<![endif]-->
<!-- yui profiler …Run Code Online (Sandbox Code Playgroud) 我正在为两个无偿网站编写和使用一个非常简单的基于CGI(Perl)的内容管理工具.它为网站管理员提供HTML表单,用于填写字段(日期,地点,标题,描述,链接等)的事件并保存.在该表单上,我允许管理员上传与事件相关的图像.在显示表单的HTML页面上,我还显示了上传图片的预览(HTML img标签).
当管理员想要更改图片时,会发生此问题.他只需点击"浏览"按钮,选择一张新照片然后按确定即可.这很好用.
上传图像后,我的后端CGI处理上传并正确地重新加载表单.
问题是显示的图像没有刷新.即使数据库保存正确的图像,仍会显示旧图像.我已将其缩小到图像在Web浏览器中缓存的事实.如果管理员点击Firefox /资源管理器/ Safari中的RELOAD按钮,则所有内容都会刷新,并且只会显示新图像.
我试图通过写一个过去很远的日期的HTTP Expires指令来控制缓存.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Run Code Online (Sandbox Code Playgroud)
请记住,我在管理方面,我并不关心页面是否需要更长时间才能加载,因为它们总是过期.
但是,这也不起作用.
上传图像时,其文件名不会保留在数据库中.它被重命名为Image.jpg(在使用时简单地说出来).使用新图像替换现有图像时,名称也不会更改.只是图像文件的内容发生了变化.
网络服务器由托管服务/ ISP提供.它使用Apache.
有没有办法强制Web浏览器不缓存此页面中的内容,甚至图像?
我正在使用数据库实际"保存文件名"的选项.这样,如果图像被更改,IMG标签的src也将改变.但是,这需要在整个站点进行大量更改,如果我有更好的解决方案,我宁愿不这样做.此外,如果上传的新图像具有相同的名称(例如图像有点照片并重新上传),这仍然无效.
browser-cache ×10
caching ×5
html ×2
http ×2
javascript ×2
ajax ×1
angularjs ×1
asp.net ×1
asp.net-mvc ×1
browser ×1
css ×1
http-headers ×1
image ×1
jquery ×1