在Liferay中,可以通过使用CacheControlUtil.setHeaders()
方法来控制页面的缓存。以下是一个示例代码,演示如何禁用标题过滤器并禁用页面缓存:
import com.liferay.portal.kernel.servlet.BrowserSnifferUtil;
import com.liferay.portal.kernel.servlet.HttpHeaders;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portal.util.PropsValues;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.osgi.service.component.annotations.Component;
@Component(
immediate = true,
property = {
"before-filter=Virtual Host Filter",
"dispatcher=FORWARD",
"dispatcher=REQUEST",
"servlet-context-name=",
"servlet-filter-name=DisableCacheFilter",
"url-pattern=/*"
},
service = Filter.class
)
public class DisableCacheFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
@Override
public void doFilter(
ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String requestURI = request.getRequestURI();
if (requestURI.startsWith("/c/")) {
CacheControlUtil.setHeaders(response, PropsValues.HTTP_HEADER_VERSIONING_ENABLED);
BrowserSnifferUtil.setBrowserSniffer(request);
boolean edgeIncludeCache = true;
if (BrowserSnifferUtil.isIe(request) &&
(BrowserSnifferUtil.getMajorVersion(request) < 9)) {
edgeIncludeCache = false;
}
if (PortalUtil.isGroupFriendlyURL(requestURI) ||
PortalUtil.isLayoutFriendlyURL(requestURI)) {
CacheControlUtil.setHeaders(
request, response,
PropsValues.BROWSER_CACHE_DISABLED,
PropsValues.BROWSER_CACHE_SIGNED_IN_DISABLED,
edgeIncludeCache, false);
}
}
filterChain.doFilter(servletRequest, servletResponse);
}
}
这个示例代码中,我们创建了一个DisableCacheFilter
过滤器,它是一个Liferay的OSGi组件。该过滤器会拦截所有的请求,并根据条件禁用页面缓存。通过调用CacheControlUtil.setHeaders()
方法来设置响应头,从而禁用缓存。可以根据实际需求进行更多的自定义配置。
上一篇:标题关键词搜索