我想从我的代码中更改网站徽标..当用户选择并保存图像时..它已更新但网站徽标不会立即更改...并且它并不总是复制..有时候我必须刷新网站徽标更改的页面,有时它会立即更改..
我附上了从我的表单中设置网站徽标的代码,
File adminCompanyLogoPicFile = uploadRequest.getFile("admin_company_logo");
imageUploadReq(userObj,adminCompanyLogoPicFile,actionRequest);
public static void imageUploadReq(User userObj, File fileType,ActionRequest actionRequest) throws IOException, PortalException, SystemException{
byte[] bytes = FileUtil.getBytes(fileType);
ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
if (Validator.isNotNull(userObj) && fileType != null && Validator.isNotNull(bytes) && bytes.length != 0) {
if(siteLogoUpload){
LayoutSetLocalServiceUtil.updateLogo(themeDisplay.getScopeGroupId(), true, true, bytes);
}else{
UserLocalServiceUtil.updatePortrait(userObj.getUserId(), bytes);
}
}
}
答案 0 :(得分:1)
有几层缓存可能导致这种情况:Liferay内部使用ehcache将一些对象保留在内存中。当您通过API更新时,我不确定这是否相关 - 但徽标也可能会被页面缓存。您可以尝试更新徽标,然后导航到自上次重新启动服务器以来从未显示(因此缓存)的页面。
此外,徽标可能包含一些HTTP级缓存信息。通常,站点徽标不会经常更改,因此可以指示浏览器暂时缓存它们。您可以通过检查DOM,显示徽标并在浏览器中重新加载(或移位重新加载),或者在刷新页面之前清除浏览器缓存来测试。