2016-06-17 5 views
0

Я хочу сменить логотип сайта из моего кода .. когда пользователь выбирает и имидж и сохраняет его .. он обновляется, но логотип сайта не изменяется с утра .. и он не всегда реплицируется ..sometime я должен обновить страницу для изменения логотипа сайта и иногда он изменил immidiately ..Логотип сайта не изменяется сразу после обновления

Я прилагаю код для установки логотипа сайта от моей формы,

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

Вы использовали пользовательскую тему? –

+0

@ DanieleBaggio ... Да и в теме я установил $ site_logo, чтобы установить значение логотипа .. –

ответ

1

есть несколько слоев кэша что может привести к этому: Liferay внутренне использует ehcache для хранения некоторых объектов в памяти. Я не уверен, что это актуально здесь при обновлении через API, но логотип также может быть кэширован по страницам. Вы можете попробовать, если вы обновите логотип, а затем перейдите на страницу, которая никогда не отображалась (таким образом, кэшировалась) с момента последнего перезапуска сервера.

Кроме того, логотип может иметь некоторую информацию о кеше уровня HTTP. Обычно логотипы сайтов не меняются слишком часто, поэтому было бы неплохо дать указание браузеру кэшировать их некоторое время. Вы можете проверить это, проверив DOM, отобразите логотип и перезагрузите его (или перезапустите) в своем браузере или очистите кеш браузера перед обновлением страницы.

+0

Но если я обновляю страницу, тогда отображается логотип ... Мне не нужно очищать кеш вручную ... так что если логотип хранится в кеше, тогда он не должен отображаться на странице, освежающей .... и если это проблема кэширования, то как я могу решить ее с помощью кодирования, вы можете дать фрагмент кода ... –

+0

Теперь я понятия не имею, re ask: В вашем вопросе выглядит, что логотип не обновляется - в вашем комментарии он обновляется. Просьба указать шаги (желательно, отредактировав вопрос), чтобы воспроизвести последовательность, которую вы проходите, ваши ожидания и фактические наблюдения. –