requirejs - кэширование html-файлов при входе в приложение

у меня есть SPA в Durandal, использующий requireJS. Мой подход заключается в том, что при выходе из моего приложения я хочу, чтобы все html + js были очищены, например, потому что при регистрации с определенным пользователем некоторые элементы управления отключены, а при регистрации с другим пользователем эти элементы управления должны быть включены. Похоже, что файлы кэшируются. Я хочу, чтобы они кэшировались при переходе между страницами в этом приложении пользователем, но при выходе из системы и повторном входе в систему - чтобы начать все сначала.

спасибо


person user5260143    schedule 23.02.2014    source источник
comment
stackoverflow.com/questions/21175222/   -  person RainerAtSpirit    schedule 25.02.2014


Ответы (2)


Это пахнет так, как будто вы идете об этом неправильно.

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

Вы можете пройти через это, «очистив кеш» при выходе из системы. Но что, если в будущем права пользователя можно будет изменить, пока он еще находится в системе? Вы должны изобрести еще один хак, чтобы заставить это работать. В конечном счете, вы создадите тонну спагетти-кода, который будет очень хрупким.

Вместо этого представления, ЕСЛИ вы хотите их кэшировать, НЕ ДОЛЖНЫ содержать никакой логики. Логика, которая включает или отключает элементы, да и все остальное, должна диктоваться вашим JavaScript и данными, которые вы получаете от серверной части. Представление — это всего лишь HTML-шаблон, который использует данные из модели представления JavaScript.

По сути, вам нужно переключиться в своем уме и начать использовать Durandal/Knockout так, как он должен использоваться: MVVM, привязки в вашем HTML, которые устанавливают состояние DOM на основе данных в вашей модели представления. То, что вы делаете прямо сейчас, — это «жесткое кодирование» состояния HTML, когда вы визуализируете HTML на сервере, и вы пытаетесь взломать свой путь через нединамическую природу этого решения.

Если вы действительно хотите продолжить свою текущую линию кодирования: простой способ добиться полного сброса вашего JS и HTML — это выполнить полное обновление страницы, таким образом, «покинув свое SPA».

person Hans Roerdinkholder    schedule 24.02.2014

используя urlArgs, вы можете отключить кеширование, добавьте это в свой require.config:

urlArgs: "_disable_cache_=" +  (new Date()).getTime()
person Mehran Hatami    schedule 23.02.2014
comment
но я хочу чтобы отключение кеширования было только при выходе-входе, а не при переходе между страницами - person user5260143; 23.02.2014