Динамически генерирующий Javascript на вашем сервере может быть чрезвычайно мощным инструментом, и я испытал как его потенциал роста, так и недостаток в моих проектах.
В общем, вы хотите сохранить как можно более статичным, чтобы минимизировать работу, выполняемую по каждому запросу. Это включает как можно больше кеш браузера, что может стать проблемой в вашем случае.
Что я обычно делаю, так это иметь блок в заголовке в базовом шаблоне. В шаблонах, которые должны выполнять пользовательский javascript, который известен только во время выполнения (например, настройка на основе зарегистрированного пользователя), я добавляю его в блок. Здесь я могу динамически генерировать javascript, который, как я знаю, не будет кэшироваться, поэтому я могу сделать некоторые предположения. Недостатком является более сложная задача.
Если вам нужно просто указывать на URL-адреса или иметь простую конфигурацию и т. Д., Я бы предложил создать представление, которое вернет Javascript-файл с этими настройками. Вы можете установить правильные заголовки (Etag, Cache-Control и т. Д.), Чтобы браузер кэшировал файл в течение некоторого разумного времени. Когда вы обновляете свой код, убедитесь, что Etag изменится.
В коде, который должен использовать конфигурацию, вы всегда должны убедиться, что переменная, которую вы ищете, действительно определена, иначе вы, , получите проблемы, которые трудно отладить, когда по какой-то причине javascript конфигурации неправильно загружен.
Я понятия не имею, как JS файлы кэшируются браузером ... Но разве вы не думаете, что, поскольку он генерируется каждый раз, браузер будет загружать его при каждом отдельном запросе? – sebpiq 2010-11-23 08:13:33
это, вероятно, было бы; вам придется посмотреть заголовки ответа кэша http на js – seand 2010-11-23 08:15:55