Что такое лучшие практики для предотвращения устаревшего CSS и JavaScript

Я могу подойти довольно близко (или, может быть, так далее?) (А) заставить вашу функцию возвращать list и (б) векторизовать ее. Из ?outer

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

listify <- function(a,b){
   list(a,b)
}

lv = Vectorize(listify)

s1 <- seq(1,3)
s2 <- seq(4,6)

result = t(outer(s1,s2,FUN = lv))
result
#      [,1]      [,2]      [,3]     
# [1,] Integer,2 Integer,2 Integer,2
# [2,] Integer,2 Integer,2 Integer,2
# [3,] Integer,2 Integer,2 Integer,2

result[1, 1]
# [[1]]
#      a b
# [1,] 1 4

result[2, 1]
# [[1]]
#      a b
# [1,] 1 5

Обратите внимание, что каждый элемент матрицы представляет собой список длиной 1.

Как отмечено в комментариях, без дополнительной информации я не вижу никакого преимущества наличия этих одноэлементных списков в матрице. С длинной таблицей expand.grid или трехмерным массивом, кажется, потенциально легче работать.

10
задан digitalsanctum 10 December 2008 в 15:53
поделиться

5 ответов

Я добавляю параметр к запросу с числом пересмотра, чем-то как:

<script type="text/javascript" src="/path/to/script.js?ver=456"></script>

'ver' параметр обновляется автоматически с каждой сборкой (чтение из файла, который сборка обновляет). Это удостоверяется, что сценарии кэшируются только для текущего пересмотра.

14
ответ дан 3 December 2019 в 18:02
поделиться

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

Однако относительно производительности и отзывающегося эхом упоминания B Todd о газовании именем файла, проверьте работу Steve Souders для больше по теме:

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

"Администраторы прокси могут изменить конфигурацию для поддержки кэширующихся ресурсов с querystring, когда кэширующиеся заголовки указывают, что это является соответствующим. Но конфигурация по умолчанию - то, с чем веб-разработчики должны ожидать встречаться наиболее часто".

http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

2
ответ дан 3 December 2019 в 18:02
поделиться

Используйте a conditional get запрос с If-Modified-Since заголовок

1
ответ дан 3 December 2019 в 18:02
поделиться

Если Вы получите "измененное время" файла как метка времени, то он будет кэшироваться, пока файл не изменяется. Просто используйте функцию помощника (или независимо от того, что это называют в других платформах) добавить сценарий/CSS/теги изображения, которые получают метку времени из файла. На Unix как система (околдовывают большую часть survers), Вы могли просто touch файлы, чтобы вынудить измененное время измениться при необходимости.

Ruby on Rails использует эту стратегию в производственном режиме (по умолчанию я beleave) и использует нормальную метку времени в режиме разработки (чтобы быть действительно уверенным, что что-то не кэшируется).

0
ответ дан 3 December 2019 в 18:02
поделиться

Это - на самом деле очень твердая проблема и что-то, для чего можно потратить некоторое время разработку правильное решение.

Я рекомендовал бы публиковать Ваши файлы с помощью метки времени и/или версии, встроенной в URL, таким образом, вместо:

/media/js/my.js Вы заканчиваете с:

/media/js/v12/my.js или что-то подобное.

Можно автоматизировать управление версиями/добавление метки времени с любым инструментом.

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

Одна вещь не упустить с JS или CSS состоит в том при включении зависимых URL в них (фоновые изображения, и т.д.) необходимо удостовериться метка времени/изменения версии JS/CSS, если ресурс внутри делает (а также перепишите их, но это возможно с очень простым regex и декларацией ресурса).

Независимо от того, что Вы удостоверяетесь, что не бросили a? vblah на конце, поскольку Вы в основном бросаете кэширование из окна, когда Вы делаете это (который неудачен, поскольку это - безусловно самый легкий способ обработать это),

1
ответ дан 3 December 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: