相关疑难解决方法(0)

IE 9+忽略ETag值更改并返回缓存响应

Etag提供的缓存验证适用于FF和chrome,但IE似乎忽略了Etag值并始终返回缓存的响应.

服务器响应是:

HTTP/1.1 200 OK
Date: Mon, 07 Jul 2014 06:01:57 GMT
Content-Type: application/json
ETag: a7628382056ddd13b7e06991571fd3ad
Content-Encoding: gzip
Content-Length: 4360
Run Code Online (Sandbox Code Playgroud)

当客户端发送条件获取请求时

If-None-Match: 71fb49ecd6f85545693dec0e78ae2131
Run Code Online (Sandbox Code Playgroud)

根本不发送请求,IE返回缓存的响应.当ETag值相同时它是透明的但是当ETag不同时它是一个问题.

对我有用的唯一解决方案是添加标题

Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)

我监控网络并强制IE验证ETag值.
问题解决了!
但是我没有找到任何正式的解决方案.我使用帖子Make IE来缓存资源,但总是重新验证作为参考,但大多数信息与我的问题无关.

如果您有其他想法或建议,请分享

etag internet-explorer caching

11
推荐指数
1
解决办法
2770
查看次数

由于缓存,网站html不会为用户更新

我正在建立一个网站,我的用户正在遇到网站缓存问题.我开发了我的网站,并设置了chrome开发人员工具来禁用我的网站的缓存以进行开发.问题是当我向prod发布一个新的更改时,我的所有用户都因为浏览器缓存而无法获得更新.当我在朋友的计算机上手动删除我的网站的缓存时,它可以工作,但我显然不能指望每个人都这样做以获得新的更新.无论如何,我是否可以通过版本控制来解决这个问题?我环顾四周但似乎找不到任何东西.

编辑:我知道我可以防止缓存,但我不想完全阻止缓存,这似乎是一个糟糕的设计

html caching browser-cache

10
推荐指数
1
解决办法
1万
查看次数

viewExpiredException JSF

为了处理JSF中的viewExpiredException,我进行了编码

<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/error.html</location>
</error-page>

<session-config>
    <session-timeout>1</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)

web.xml.

error.html我已重定向到原始登录页面.但问题是会话范围bean即使会话过期也没有被清除.有什么方法可以解决这个问题吗?

java session jsf viewexpiredexception

9
推荐指数
1
解决办法
5935
查看次数

如何正确使JSP会话无效?

所以这就是问题所在.当用户退出我的网站时,他们仍然可以点击后退按钮并继续使用该网站.为了跟踪用户是否登录,我创建了一个会话属性"isActive".用户登录时该属性设置为true,并且在注销时会话无效之前(冗余)删除该属性.同样在每个页面上,我都会检查属性是否存在.

我还指定不应在其head标签中缓存页面.

尽管如此,用户仍然能够回击浏览器,并继续使用该网站,就好像他们从未注销过一样.

有关如何解决此问题的任何想法?

这是代码:

登录Servlet:

...
session.setAttribute("isActive", true);
//Redirect to home page.
Run Code Online (Sandbox Code Playgroud)

检查登录的JSP:

<c:if test='${empty sessionScope.isActive || sessionScope.isActive != true}'>
     <c:redirect url="/index.jsp?message=Session Timed Out."/>
</c:if>
Run Code Online (Sandbox Code Playgroud)

注销Servlet:

request.getSession().removeAttribute("isActive");
request.getSession().invalidate();
response.sendRedirect("index.jsp");
Run Code Online (Sandbox Code Playgroud)

内部标记:

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">
Run Code Online (Sandbox Code Playgroud)

谢谢

java security session jsp invalidation

9
推荐指数
1
解决办法
2万
查看次数

标头未使用node.js/Express进行重定向设置

我对node.js,Express和移动开发比较陌生,并且遇到了我认为与使用Express发送标头有关的问题.

用户从主页"/"开始,未登录,然后单击按钮进入登录页面.当他们将用户名和密码提交给'/ validate_signin'时,他们应该被重定向回主页,这次主页显示不同,因为他们已登录.

重定向的工作方式如下:

res.redirect('/');
Run Code Online (Sandbox Code Playgroud)

这在我的笔记本电脑上工作正常,但在我的手机上,它重定向到'/',处于旧状态,可能是因为缓存.如果我在手机上刷新页面,"/"将会显示出来.

我发现这篇文章: 如何在所有浏览器中控制网页缓存?

尝试过以下两种方式设置标头(单独),但它们似乎没有发送:

res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", 0);

res.writeHead(302, {
    "location": "/",
    "Cache-Control" : "no-cache, no-store, must-revalidate",
    "Pragma": "no-cache",
    "Expires": 0
});
Run Code Online (Sandbox Code Playgroud)

以下是我目前收到的标题:

HTTP/1.1 304 Not Modified
X-Powered-By: Express
Date: Fri, 13 Jul 2012 17:35:18 GMT
Cache-Control: public, max-age=0
Last-Modified: Fri, 13 Jul 2012 12:32:12 GMT
Etag: "3223-1342182732000"
Accept-Ranges: bytes
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

非常感谢.

header http-headers node.js express

9
推荐指数
1
解决办法
1万
查看次数

我可以使用JavaScript强制对iframe进行硬刷新吗?

我在Stack Overflow上找到了很多关于如何用JavaScript刷新iframe的答案.

例如:

他们工作正常.但是,如果最近iframe中的页面已更改,则刷新将不会显示此更改.有没有办法可以强制刷新指定的iframe,以便显示新版本?

javascript iframe refresh

9
推荐指数
2
解决办法
3万
查看次数

如何强制window.location发出HTTP请求而不是使用缓存?

在我的Web应用程序中,我设置window.location导航到不同的页面,但由于某种原因,Firefox显示该页面的旧版本.

使用Firebug我检测到浏览器甚至没有发送HTTP请求,它只是使用该页面的旧版本(甚至不是最后一个版本)并显示它.

页面本身具有所有常用的标题,以防止缓存,当我使用链接或手动输入浏览页面时,它可以正常工作.只有在设置时才会出现此问题window.location.

这是一个Firefox问题或任何浏览器的东西?这种行为可以改变吗?

javascript browser firefox

9
推荐指数
2
解决办法
1万
查看次数

导航回ASPX页面时出现ERR_CACHE_MISS

我有一个WebForms应用程序,其中第一页基本上是一个网格,其中包含指向第二页的链接,该第二页加载PDF查看器.网格实际上位于.ascx控件中.从第一页到PDF查看器页面,一切正常.但是,当我按下后退按钮返回第一页时.我收到以下错误(在Chrome中,但这也发生在其他浏览器中):

缓存未命中错误

如果我单击后退按钮然后浏览器返回到第一页,一切都很好,但我需要解决此错误.

我已经尝试根据StackOverflow答案的建议在第一页中禁用缓存,如下所示:

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);
Run Code Online (Sandbox Code Playgroud)

我已将此代码放在.aspx页面和.ascx控件(在OnInit方法中)后面的代码中,但都无济于事.我在这里错过了什么?

c# asp.net caching

9
推荐指数
1
解决办法
3251
查看次数

CSS没有更新本地python httpserver重启

我对web dev和http服务器等世界相当新,但我有一个基本的shell脚本,如下所示:

PORT=2600 
if [[ $1 =~ ^[0-9]+$ ]]
  then PORT=$1
fi

echo "Starting local http server (ctrl-c to exit)"
echo ""
echo "  Demo:   http://127.0.0.1:$PORT/demo"
echo ""
python -m SimpleHTTPServer $PORT
Run Code Online (Sandbox Code Playgroud)

它似乎可以正常工作,但是当我在我的演示中更新css文件时,很少和不一致会更新页面上显示的css.对任何html的更改都很好,并且它偶尔会显示css的变化,但我觉得我在这里做了一些根本错误的事情.思考?

css http simplehttpserver

8
推荐指数
1
解决办法
6270
查看次数

为什么单独使用ETag不足以使浏览器缓存无效?

我已经阅读了很多与此相关的文章,也阅读了有关HTTP缓存的很好的文章:https : //developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl = en#无效并更新缓存的响应, 但我仍然不清楚:

为什么发送ETag标头不足以使特定资源的浏览器缓存无效?为什么每个人都建议实际更改资源的URL /文件名以强制浏览器重新下载文件?如果浏览器已经使用特定的ETag缓存了文件,并且在服务器上修改了ETag,那还不够吗?

etag caching http

8
推荐指数
1
解决办法
1675
查看次数