Liferay中的Cache问题

本文介绍了解决IE浏览器缓存导致已登录状态下返回登录页的问题。通过修改Liferay中的缓存设置,确保在未登录时启用无缓存模式,避免了不必要的跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在测试的时候,发现一个问题,就是IE的首页设为了该网站。

登录成功后,什么也不做,直接点击home的那个图标,画面会跑到登录画面去。

但是用户名,密码都不输入,直接点击登录就能够迁移到TOP画面。

其实如果是已经登录的情况下,不想跑到登录画面去,而是直接显示TOP画面。


查找了半天,发现是IE的cache的问题。

那么Liferay中cache的设置在那里呢?

是在theme中设置的,路径:/liferay-portal-src-6.0.X/portal-web/docroot/html/common/themes/top_meta.jspf

下面的code中设置的nocache的。因为是用一个flag来控制的。登录画面的时候页面并没有设置nocache。

<%
String cacheControl = request.getParameter("cache_control");
%>

<c:if test='<%=  ((cacheControl != null) && (cacheControl.equals("0"))) %>'>
    <meta content="no-cache" http-equiv="Cache-Control" />
    <meta content="no-cache" http-equiv="Pragma" />
    <meta content="0" http-equiv="Expires" />
</c:if>

经过改造,如果是没有登录的时候设置nocache。实例代码如下:

<%
String cacheControl = request.getParameter("cache_control");
boolean isNochache = false;
LastPath lastPath = (LastPath)session.getAttribute(WebKeys.LAST_PATH);
if (lastPath == null || "/".equals(lastPath.getPath()) || "/home".equals(lastPath.getPath())) {
    isNochache = true;
}
%>

<c:if test='<%= isNochache || ((cacheControl != null) && (cacheControl.equals("0"))) %>'>
    <meta content="no-cache" http-equiv="Cache-Control" />
    <meta content="no-cache" http-equiv="Pragma" />
    <meta content="0" http-equiv="Expires" />
</c:if>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值