LiferayでのCache問題
最近テストの时、一つの问题を発见して、IEのトップページがこのウェブサイトのためです.
ログインに成功すると、何もせずにホームのアイコンをクリックすると、画面がログイン画面に走ります.
しかし,ユーザ名,パスワードは入力せず,ログインをクリックするだけで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が設定されていません.
改造を経て、ログインしていない場合はnocacheを設定します.インスタンスコードは次のとおりです.
ログインに成功すると、何もせずにホームのアイコンをクリックすると、画面がログイン画面に走ります.
しかし,ユーザ名,パスワードは入力せず,ログインをクリックするだけで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>