净4和C#.
我需要Cache-Control: no-cache在Web Response页面的HTTP Response标头中设置发送到Browser Cache-Control().
知道怎么做吗?
谢谢你的时间.
我在web.config中有这个:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Cache-Control" value="max-age=30,public" />
</customHeaders>
</httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
但是当我加载页面时,这是响应头:
Cache-Control: private,max-age=30,public
Run Code Online (Sandbox Code Playgroud)
它是一个ASP.NET MVC应用程序,控制器没有指定任何位置的缓存指令.
在我的IE8页面上,我有一些文本可以通过管理面板进行更改.例如:如果页面包含文本"hello world",则5分钟后文本可能会有所不同,具体取决于管理员是否更改了文本.
问题在于IE8缓存页面并再次显示相同的文本.如果我们清除缓存并刷新,则会更新文本.
我正在使用<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">tag来禁止浏览器缓存.
我已经看到,如果我选择互联网选项 → 浏览历史记录(设置) →每次访问网页时,问题都会消除; 但如果将其设置为自动,则会显示页面的缓存版本.
即使最终用户将IE8中的缓存选项设置为自动,有没有办法强制"禁止缓存"?
所以我有一个简单的静态网站,我定期更新.(这是一个用Jekyll构建的博客.)问题是浏览器*似乎正在缓存页面并隐藏返回查看器的更新.
一个显而易见的选择是做一些像这样的地方更新主要发生在着陆页.除了我不一定反对缓存; 我只是想确保服务器上的新版本取代缓存版本.关于如何实现这一点的想法?
*我只在Chrome上直接观察到这一点,但我想其他浏览器存在同样的问题.
我正在使用以下代码.
<%
response.addHeader("Cache-Control","no-cache");
response.addHeader("Pragma","no-cache,no-store,private,must-revalidate,max-stale=0,post-check=0,pre-check=0 ");
response.addDateHeader ("Expires", 0);
%>
Run Code Online (Sandbox Code Playgroud)
它在IE中完美运行,但页面仍然在Firefox中缓存.我想在Firefox中停止缓存.有什么建议?
可能重复:
确保未在所有浏览器中缓存网页
我正在研究连接到dojo.store.Memory的简单dojo comboBox(dijit.form.ComboBox)。我在Firefox 10上使用了最新的Netbeans和Glassfish设置。我的问题是,当我更改或注释掉与组合框相关的代码时,在刷新网页时不会显示更改。我试过清理/构建,重新运行等,但是注释掉代码似乎无济于事。Firefox似乎正在运行页面的缓存版本,而不是呈现我所做的最新代码更改。我不需要每次刷新页面时都必须清除浏览器缓存。(我最终想要做的就是指示自动完成功能打开和关闭的时间。)有什么想法吗?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" type="text/javascript" ></script>
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
dojo.require("dijit.form.ComboBox");
dojo.require("dojo.store.Memory");
var myBox, store;
dojo.ready(function(){makeComboBox();});
function makeComboBox(){
store = new dojo.store.Memory({
data: [
{name:"Alabama", id:"AL"},
{name:"Alaska", id:"AK"},
{name:"American Samoa", id:"AS"},
{name:"Arizona", id:"AZ"},
{name:"Arkansas", id:"AR"},
{name:"Armed Forces Europe", id:"AE"},
{name:"Armed Forces Pacific", id:"AP"},
{name:"Armed Forces the Americas", id:"AA"},
{name:"California", id:"CA"},
{name:"Colorado", id:"CO"},
{name:"Connecticut", id:"CT"},
{name:"Delaware", id:"DE"}
]
});
myBox = new dijit.form.ComboBox({
id: "stateSelect", …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring MVC与Thymeleaf和Tomcat,我希望能够更新静态数据(html页面)而无需重新部署.在我的应用程序中,html是由Spring控制器映射的.即使是JRebel也无济于事.它更新了java类,但对视图没有任何作用.我该怎么做才能解决这个问题?也许对于html我需要一些像Jasper for JSP的监听器机制,或者我应该为Spring控制器禁用一些缓存?
Mobile Safari使用一种特殊的缓存机制Page Cache(在此),该机制基本上使当前页面保持活动状态,但是当我们导航到另一个页面时处于休眠状态。这样,当用户按下back按钮时,它可以立即以最新状态显示上一页。
这对于导航和浏览Web很有用,但是在特殊情况下,这变得很烦人,因为每次用户导航到该页面时,您可能需要获取该页面的新副本。(就我而言,我必须进入以下页面:登录名和主页)。
我完全知道,没有什么可以阻止用户打开同一应用程序的多个选项卡。我对此并不担心。
在防止页面被缓存的跨浏览器的解决方案并不能帮助如Safari是保持页面打开,但无形的暂停。
该window.onpageshow和处理event.persisted没有帮助,因为它似乎在浏览器不执行onpageshow某些原因事件第二次(当你按下back按钮)。
对于那些不知道onpageshow事件是什么的人请注意:Apple不鼓励使用loadand unload事件,因为使用页面缓存的概念,这些事件没有明确的意义。因此,onpageshow应该做我们期望的load事件。
在之前的版本中,我会像这里一样.但是在新版本的ASP中没有web.config文件,我相信它应该在launchSettings.json文件中完成.
基本上我想做的就是停止缓存app.js文件和模板文件夹中的所有.html文件.我该怎么做?
我读过有关单个缓存控制标头值的内容。为了测试我学到的东西,我打开 Facebook 并进行检查。这是我得到的 Cache-Control 响应标头:
cache-control:private, no-cache, no-store, must-revalidate
Run Code Online (Sandbox Code Playgroud)
我很困惑这个标头实际上告诉了什么,因为它一次包含 4 个值。那么,如果通过网络发送的资源包含这样的标头,会发生什么情况呢?
编辑:
no-store 表示“根本不存储,不在私有非公共缓存中存储”,no-cache 表示“是的,您可以缓存,但请确保在请求资源时重新验证新鲜度”。Private 表示“您可以存储在私有缓存中”。它不能同时完成这三件事。但是,我们让他们同时发送响应。看起来还有一些我不知道的附加规则。
caching ×5
asp.net ×2
http-headers ×2
javascript ×2
asp.net-core ×1
browser ×1
c# ×1
dojo ×1
firefox ×1
html ×1
http ×1
http-caching ×1
iis ×1
iis-7 ×1
ios ×1
java ×1
jsp ×1
meta-tags ×1
netbeans ×1
pageshow ×1
safari ×1
spring-mvc ×1
thymeleaf ×1
tomcat ×1
web-config ×1