Регистрация  |  Вход

Есть ли альтернатива статик ресурсам, чтоб победить версионность?

Всем привет!
Помогите, пожалуйста, найти решение: есть кастомный виджет, типа web-2-case. Он лежит в статик ресурсах на каждом из сендбоксов и на проде. Он как-то интегрируется к НЕ Salesforce сайту по линке, которая состоит из: SaalesforceSite/chat/resource/timestampOfStaticResource/staticResourceName.
На Salesforce значение этой линки лежит в кастом сеттингах и оттуда подбирается кодом.

Когда виджет обновляют, его перезаливают в статик ресурсы и таким образом меняется "timestampOfStaticResource"-часть линки.
Неудобство составляет то, что каждый раз при обновлении статик ресурса и изменения его линки, приходится менять ссылку на виджет, который использует тот НЕ Salesforce сайт.

Есть ли какая-то альтернатива статик ресурсам, то есть мне нужно использовать что-то, где можно хранить этот виджет, обновлять его, когда нужно, и при этом чтоб ссылка на этот ресурс была постоянной и его можно было подключить как со стороны Salesforcе, так и с того стороннего сайта. Ну и конечно же чтоб всё было секьюрно.

Может быть кто-то сталкивался или есть какие-то идеи?

Всем привет!
Помогите, пожалуйста, найти решение: есть кастомный виджет, типа web-2-case. Он лежит в статик ресурсах на каждом из сендбоксов и на проде. Он как-то интегрируется к НЕ Salesforce сайту по линке, которая состоит из: SaalesforceSite/chat/resource/timestampOfStaticResource/staticResourceName. 
На Salesforce значение этой линки лежит в кастом сеттингах и оттуда подбирается кодом.

Когда виджет обновляют, его перезаливают в статик ресурсы и таким образом меняется "timestampOfStaticResource"-часть линки. 
Неудобство составляет то, что каждый раз при обновлении статик ресурса и изменения его линки, приходится менять ссылку на виджет, который использует тот НЕ Salesforce сайт. 

Есть ли какая-то альтернатива статик ресурсам, то есть мне нужно использовать что-то, где можно хранить этот виджет, обновлять его, когда нужно, и при этом чтоб ссылка на этот ресурс была постоянной и его можно было подключить как со стороны Salesforcе, так и с того стороннего сайта. Ну и конечно же чтоб всё было секьюрно.

Может быть кто-то сталкивался или есть какие-то идеи?

timestampOfStaticResource - можно опустить

timestampOfStaticResource - можно опустить

Спасибо!

Вроде работает без timestamp.
Я пробовала еще вместо значения timestampOfStaticResource вставлять текущее время. Тоже вроде как работает. Но наверное надо бы еще завтра проверить, или не из кеша подбираются данные?

Или данные в кеш кладутся по timestampOfStaticResource???

Еще возник вопрос с тем, что еще приходится менять линку, когда инстанс меняется после рефреша сендбоксов. Как вариант (но может это и не хороший вариант - пока я не поняла), брать линку со статик ресурсов с прода. Но тогда похоже придется там держать 2 статик ресурса - один для тестов, а второй как рабочую текущую версию.

Спасибо!

Вроде работает без timestamp. 
Я пробовала еще вместо значения timestampOfStaticResource вставлять текущее время. Тоже вроде как работает. Но наверное надо бы еще завтра проверить, или не из кеша подбираются данные? 

Или данные в кеш кладутся по timestampOfStaticResource???

Еще возник вопрос с тем, что еще приходится менять линку, когда инстанс меняется после рефреша сендбоксов. Как вариант (но может это и не хороший вариант - пока я не поняла), брать линку со статик ресурсов с прода. Но тогда похоже придется там держать 2 статик ресурса - один для тестов, а второй как рабочую текущую версию.

Варианты с timestampOfStaticResource, со своим кастомным timestamp или вообще без это всего лишь вариант линка который кэширует браузер. Насколько я помню SF по любому из них должен отдавать актуальный статик ресурс (но не 100% уверен, давно было дело). Если я ошибаюсь, буду только рад если поправите меня
Другое дело что делать свой timestamp чтобы обходить кэш браузера это уже надо придумать что-то кастомное, так как просто пулять туда текущий timestamp отрубит браузерный кэш и ресурс будет грузиться каждый раз исключая всю прелесть кэша.

Как костыль можно сделать такой вариант (далее теоретическое изложение). Запилить простейшую VF страницу в одну строчку полезного кода - которая будет содержать к примеру вот такое
{!URLFOR($Resource.style_resources, 'styles.css')}
Если открыть такую страницу, то можно увидеть реальную ссылку с timestampOfStaticResource. Сделать эту страницу доступную извне чтобы НЕ SF сайт мог к ней достучаться. И получается что загрузка ресурса на НЕ SF сайте будет состоять из двух шагов: (1) Открытие страницы и извлечение из нее линка на статик ресурс, (2) использование полученного линка для загрузки ресурса. Но это уже немного из JS кодинга.

С инстансами после рефреша сандбокса увы сложнее. Он динамический и сложно сказать что будет после рефреша.

Поэтому я бы советовал замутить вариант попроще чем SF Static Resources (которые хороши для самого SF но не более). Халивать ваш ресурс куда-то к примеру на Amazon и использовать оттуда как в SF так и в НЕ SF. Опять же продумать про вариант версионности, примеров которых я думаю под Amazon будет явно больше чем под SF.

Варианты с timestampOfStaticResource, со своим кастомным timestamp или вообще без это всего лишь вариант линка который кэширует браузер. Насколько я помню SF по любому из них должен отдавать актуальный статик ресурс (но не 100% уверен, давно было дело). Если я ошибаюсь, буду только рад если поправите меня :) 
Другое дело что делать свой timestamp чтобы обходить кэш браузера это уже надо придумать что-то кастомное, так как просто пулять туда текущий timestamp отрубит браузерный кэш и ресурс будет грузиться каждый раз исключая всю прелесть кэша.

Как костыль можно сделать такой вариант (далее теоретическое изложение). Запилить простейшую VF страницу в одну строчку полезного кода - которая будет содержать к примеру вот такое 
{!URLFOR($Resource.style_resources, 'styles.css')}
Если открыть такую страницу, то можно увидеть реальную ссылку с timestampOfStaticResource. Сделать эту страницу доступную извне чтобы НЕ SF сайт мог к ней достучаться. И получается что загрузка ресурса на НЕ SF сайте будет состоять из двух шагов: (1) Открытие страницы и извлечение из нее линка на статик ресурс, (2) использование полученного линка для загрузки ресурса. Но это уже немного из JS кодинга.

С инстансами после рефреша сандбокса увы сложнее. Он динамический и сложно сказать что будет после рефреша. 

Поэтому я бы советовал замутить вариант попроще чем SF Static Resources (которые хороши для самого SF но не более). Халивать ваш ресурс куда-то к примеру на Amazon и использовать оттуда как в SF так и в НЕ SF. Опять же продумать про вариант версионности, примеров которых я думаю под Amazon будет явно больше чем под SF.

ApexRest который возвращает PageReference.forResource('<название статик ресурса>', '<путь/до/конкретного/файла >'); Так как это полноправный PageReference, то можешь вернуть redirect (304 или 307 - кстати, какая разнница?) на последний виджет.

Timestamp нужен для кэширования.

Для решения проблемы имени инстанса, заведи MyDomain.

SFDC, конечно может быть файлсервером для чегонить мелкого, но не надо. Да и дорого.

ApexRest который возвращает PageReference.forResource('<название статик ресурса>', '<путь/до/конкретного/файла >'); Так как это полноправный PageReference, то можешь вернуть redirect (304 или 307 - кстати, какая разнница?) на последний виджет.

Timestamp нужен для кэширования.

Для решения проблемы имени инстанса, заведи MyDomain.

SFDC, конечно может быть файлсервером для чегонить мелкого, но не надо. Да и дорого.