Как развернуть минимизированные файлы Javascript на веб-сервере, не изменяя метку времени файла? - PullRequest
0 голосов
/ 02 октября 2008

В нашем приложении есть несколько сотен файлов javascript, которые в настоящее время обслуживаются без сжатия. Одним из элементов нашего решения для повышения производительности клиента является минимизация файлов javascript. Я создал автоматизированное решение для этого в сборке, однако, когда эти новые файлы будут развернуты, временная метка файлов, определяющая, будет ли она повторно отправлена ​​клиенту, будет изменена. Это означает, что в каждом будущем выпуске все файлы javascript будут иметь новую метку времени. наши клиенты снова загрузят ВСЕ минимизированные файлы javascript, и таким образом победят аспект минимизации, связанный с производительностью.

Это проблема, с которой сталкивался кто-то еще? Каково было ваше решение? У вас есть отдельные неминифицированные и минимизированные файлы javascript, используемые в ваших проектах, и вы не выполняете минимизацию при сборке?

У нас есть другие решения (например, поиск только измененных файлов в репозитории исходного кода), но это один вопрос, для которого я хотел узнать, что делают другие.

Ответы [ 4 ]

4 голосов
/ 02 октября 2008

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

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

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

Аналогичным образом, вы можете записать предыдущую временную метку, выполнить перезапись, а затем использовать команду touch (при условии, что эти файлы находятся в системе Unix), чтобы установить временную метку в исходное значение.

Первый вариант, вероятно, лучше, чем просто вслепую постоянно устанавливать временную метку на одно и то же значение, потому что это может означать, что некоторые клиенты некоторое время не получают измененный файл JS, потому что сервер утверждает, что у него нет ' т изменилось.

0 голосов
/ 03 октября 2008

Прочитайте http://www.thinkvitamin.com/features/webapps/serving-javascript-fast Кэла Хендерсона из Flickr. Надеюсь, вы найдете это полезным.

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

Вы можете развернуть эти файлы сценариев за определенный период времени, чтобы ни один пользовательский запрос не занимал чрезмерно много времени. А если серьезно, о каком javascript мы говорим? Неужели одноразовая повторная загрузка сценария, связанного с вашей страницей, действительно важна? Подумайте о том, сколько усилий вам придется приложить, чтобы это сделать, и взвесьте это на пользу.

...