Отладка Javascript сложна, так как браузер не обновляет скрипты! - PullRequest
1 голос
/ 02 октября 2010

Я пытаюсь отладить Javascript, написанный в фреймворке Mootools.Сейчас я занимаюсь разработкой веб-приложения на Rails, и мой веб-сервер - это рельсы, которые загружают WEBrick.

Когда я изменяю конкретный файл tree.js, вызываемый в одном из сценариев инициализации mootools,

    require: {
        css: [MUI.path.plugins + 'tree/css/style.css'],
        js: [MUI.path.plugins + 'tree/scripts/tree.js'],
        onload: function(){
            if (buildTree) buildTree('tree1');
        }
    },

изменения не загружаются, поскольку заголовки, отправляемые клиенту, были изменены последними: 10 июля 2010 г. ..... что явно не соответствует действительности, так как я только что изменил файл.

Как избавиться от этого надоедливого кэширования.Если я сразу перехожу к сценарию в моем браузере (Chrome), он не показывает изменения, пока я не нажму кнопку «Обновить», но это не решит мою проблему, когда я вернусь к своему приложению и нажму кнопку «Обновить», он все равно загрузит предварительномодифицированный скрипт.

Ответы [ 3 ]

2 голосов
/ 02 октября 2010

Это произошло со мной также в FF, я думаю, что это заголовок кэша, отправленный сервером или самим браузером. В любом случае, простой способ избежать этой проблемы во время разработки - добавить случайный параметр к имени файла скрипта.

вместо вызова 'tree/scripts/tree.js' используйте 'tree/scripts/tree.js?'+random, который должен сделать недействительными все кэши.

0 голосов
/ 02 октября 2010

Попробуйте Ctrl + F5 трюк. Чтобы избежать попадания в кеш браузера.

Больше информации здесь: Какие запросы генерируют обновления браузеров "F5" и "Ctrl + F5"?

0 голосов
/ 02 октября 2010

Как говорит Фриско, добавление случайного числа в разработку делает свое дело, но вы, вероятно, обнаружите, что проблема все еще влияет на вашу производительность. Вы хотите отправить новые изменения JavaScript своим пользователям, но не можете, пока их браузеры не перестанут кэшировать файл. Для этого просто получите файлы mtime и добавьте их в качестве случайной строки. Это изменится только при изменении файла, и поэтому JavaScript будет загружен из кэша, если он не был изменен, или он будет загружен с сервера, если он был изменен.

PHP имеет функцию filemtime , но, поскольку я не знаком с Ruby, боюсь, я не смогу помочь вам в этом направлении (извините!). Однако этот ответ , кажется, выполняет то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...