SharePoint Alfresco PHP MySQL
О сайте Контакты
вторник, 24 мая 2011 г.

Очистка кэша Flash Preview в Alfresco Share

В Alfresco Share существует такая проблема, что при загрузке новой версии документа Flash Previewer продолжает показывать старую версию. Это вводит пользователей в заблуждение. В данной статье я предложу метод решения проблемы на основе очистки «кэша» превью.

Для показа в предварительном просмотре Alfresco создает объект, который приспособлен для отображения в превьювере. Его тип - SWF. К примеру, если у нас изначально DOC, то чтобы его показать система делает такие преобразования: DOC->PDF->SWF. Конечный объект называется thumbnail, он имеет защиту от кэширования в браузере (в URL передается временной параметр - &noCacheToken=...). То есть браузер всегда загружает новую версию файла. А вот новая она или нет - зависит от того, успел ли преобразователь подготовить thumbnail после обновления версии. Если файл маленький - то пред.просмотр успевает подготовиться. Если большой (как протокол совещания, или другой серьезный документ) - то после загрузки выдается старая версия, а тем временем новая готовится в фоне. Перезагрузка браузера через некоторое время помогает достать новую версию thumbnail-а, но это не выход. Поэтому, очевидно, что в момент загрузки необходимо обновлять объекты кэша. Они на самом деле обновляются, но это происходит в фоне и не явно. Лучше при загрузке новой версии документа совсем удалить объект кэша, так как он все равно автоматически создается при первом же просмотре (в его URL есть параметр c=force, который служит для того, чтобы создать превью в случае отсутствия).

Здесь можно почитать документацию по работе с ThumbnailService: http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/service/cmr/thumbnail/ThumbnailService.html

По ссылке видно, что можно использовать метод updateThumbnail. Но успеет ли он обновить превью сразу после загрузки документа – вопрос. Лучше совсем удалять превью, и немного ждать после загрузки, зато точно знать, что в пред.просмотре загрузится новая версия.

Таким образом, меняем код скрипта загрузки документа, чтобы он при каждой новой версии принудительно удалял предпросмотр. Предпросмотр затем пересоздается в автоматическом режиме.

C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\templates\webscripts\org\alfresco\repository\upload\upload.post.js

в этом файле в строке 240 (для Alfresco 3.4.1, там, где происходит процесс заливки новой версии ранее созданного файла) нужно вставить код:

// remove preview
  var thumbnails = updateNode.getThumbnails();
   
  if (thumbnails.length > 0) {
    for (i = 0; i < thumbnails.length; i++) {
      thumbnails[i].remove();
    }

}

Sergey Lysenko, вторник, 24 мая 2011 г.

Комментарии: