Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.04.2009, 22:25
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

не знаю, я бы написал
var html = "<div>Simple div</div>";
if(b) {
html += "<div>Private div</div>
}
Ext.DomQuery.select("div#target")[0].innerHTML = html;

а переменную b где-нибудь в страничку вставил (а скорее даже создал объект с какой-то информацией):
User u = request.getSession().getParameter("user");
Boolean b = PermissionController.checkRights(u);
response.write("<script>var b = \"<div>Simple div</div>\"</script>")

по поводу безопасности - не знаю, может и повод, хотя сомнительный, имхо
по поводу размера данных - зато эти скрипты закешируются, в противном случае они каждый раз будут генерироваться
p.s. а вообще это похоже на преждевременную оптимизацию
Ответить с цитированием
  #12 (permalink)  
Старый 20.04.2009, 11:15
Новичок на форуме
Отправить личное сообщение для iDeadRat Посмотреть профиль Найти все сообщения от iDeadRat
 
Регистрация: 17.04.2009
Сообщений: 7

Не очень понял насчёт оптимизации.
По поводу кеширования вы правы, но кешировать я собираюсь на сервере, поэтому будет генерироваться не больше раза.
Ответить с цитированием
  #13 (permalink)  
Старый 20.04.2009, 11:20
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от iDeadRat
но кешировать я собираюсь на сервере, поэтому будет генерироваться не больше раза
Это не значит, что скачиваться будет не больше раза.
Если .js и .css файлы статические, то они кешируются у клиента. Сайт работает заметно быстрей.
Ответить с цитированием
  #14 (permalink)  
Старый 20.04.2009, 12:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Riim
Если .js и .css файлы статические, то они кешируются у клиента.
А браузер откуда знает, статические они или динамические?
Ответить с цитированием
  #15 (permalink)  
Старый 20.04.2009, 12:50
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Kolyaj
А браузер откуда знает, статические они или динамические?
Права пользователя хранятся в сессии на сервере, а значит, клиент должен бы запрашивать скрипт всегда одинаково. Т. е. нет динамического src, как здесь:
<script type="text/javascript" src="base.ashx?admin=1&controlPanel=1"></script>


И src всегда одинаков.
В этом случае клиент действительно закеширует скрипт, и когда права поменяются скрипт будет подгружаться старый.
Чтобы этого не происходило нужно добавлять random в src. Как для каптчи например:
<div style="cursor: pointer;" onclick="$(this).previous().src = 'CaptchaImage.ashx?r=' + rand(9999);">
	другой<br />
	рисунок</div>


Т. е. теперь скрипт !всегда! будет грузиться заново. А это совсем плохо. Что бы избавиться от random-а, и в тоже время подгружаемый скрипт поменялся при изменении прав, нужно генерировать src на основе данных из сессии пользователя. Т. е. возвращаемся к тому, что было предложено в постах 4 и 5. iDeadRat как раз от этого и хочет уйти. Я же думаю, что без серьезных минусов не получится.
Ответить с цитированием
  #16 (permalink)  
Старый 20.04.2009, 14:05
Интересующийся
Отправить личное сообщение для Артем Шалхаков Посмотреть профиль Найти все сообщения от Артем Шалхаков
 
Регистрация: 07.04.2009
Сообщений: 24

Если нужен кодоген, то самым простым способом будет представить яваскриптовое AST в Java (или что вы там используете?), которое затем и обрабатывать. Мы так делаем в XHB, только там генерится Хаскель.

Но то, что вы показываете в первом посте, можно замутить с помощью препроцессора Си или там m4 какого-нибудь.

ЗЫ кодоген это хрупко, имхо
Ответить с цитированием
  #17 (permalink)  
Старый 20.04.2009, 14:25
Интересующийся
Отправить личное сообщение для Артем Шалхаков Посмотреть профиль Найти все сообщения от Артем Шалхаков
 
Регистрация: 07.04.2009
Сообщений: 24

Есть еще вариант: DSEC, смотрим ParenScript и ему подобное.
Ответить с цитированием
  #18 (permalink)  
Старый 20.04.2009, 18:17
Новичок на форуме
Отправить личное сообщение для iDeadRat Посмотреть профиль Найти все сообщения от iDeadRat
 
Регистрация: 17.04.2009
Сообщений: 7

Riim, насчёт кеширования старой версии на клиенте я не подумал.
Правда явление смены прав, не так уж часто.
Эту проблему я думаю мы будем решать путём введения версионности на клиенте(копать в сторону persist.js и похожих решений), либо грамотным выбором expires значений
Ответить с цитированием
  #19 (permalink)  
Старый 20.04.2009, 18:19
Новичок на форуме
Отправить личное сообщение для iDeadRat Посмотреть профиль Найти все сообщения от iDeadRat
 
Регистрация: 17.04.2009
Сообщений: 7

Артем Шалхаков, так и не нашёл про DSEC пока ничего...может расшифруете
Ответить с цитированием
  #20 (permalink)  
Старый 21.04.2009, 03:41
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Не очень понял насчёт оптимизации.
ну есть такая фраза "Преждевременная оптимизация - корень всех зол" (c) Кнут Еще здесь про оптимизацию можно почитать. А почему мне это кажется преждевременной оптимизацией - потому что текущая проблема - для разных групп пользователей существуют похожие скрипты (фактически дублирование информации). Как решить эту проблему я уже сказал. А ты придумал решение, которое скорее для проблемы "чтобы не передавалась много лишней информации (размер)" (про безопасность - мне кажется сомнительный повод, но может, тебе виднее). Т.е. тормозов пока нету, но ты уже придумал как их избежать, не зная заранее будет ли заметна разница из-за такой оптимизации - может будут другие, более тормозные места. Т.е. ты создал себе проблемы, которые не факт, что оправданы, имхо. И даже если ты найдешь готовое решение, то все равно есть такая штука как KISS. Отлаживать такой код, например, будет несколько сложнее
Цитата:
По поводу кеширования вы правы, но кешировать я собираюсь на сервере, поэтому будет генерироваться не больше раза
если так, то лучше перед размещением на сервере генерировать их, а не по требованию
p.s. повторюсь, имхо, лучше переписать скрипты, чтобы они работали со всеми группами пользователей на основе информации специфической для текущего пользователя. При этом не обязательно подгружать все скрипты/отображать все части страницы - можно только нужные

Цитата:
ЗЫ кодоген это хрупко, имхо
Артем Шалхаков, а можно подробнее?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
генерация чисел и проверка на повтор Javascript jesuspunk Общие вопросы Javascript 7 25.03.2008 15:32