Нахождение неиспользованных изображений в приложении для направляющих?

Я знаком с инструментами как Полная грузоподъемность судна для нахождения CSS, не используемого в Вашем приложении для направляющих, но что-нибудь существует для изображений? Я сижу в проекте с крупным каталогом активов от работы со множеством разработчиков, и я пытаюсь обрезать жир в этом проекте. Это - особенно боль когда движущиеся активы к нашему CDN.

Какие-либо мысли?

9
задан Simone Carletti 23 December 2009 в 09:55
поделиться

4 ответа

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

Вы можете попробовать запустить wget (вероятно, уже установленный, если у вас машина на linux, иначе http://users.ugent.be/~bpuype/wget/ ) для зеркалирования всего сайта. Сделайте это на той же самой машине или в той же сети, если сможете, она проползёт весь ваш сайт и захватит все изображения

# mirror mysite.com accepting only jpg, png and gif files
wget -A jpg,png,gif --mirror www.mysite.com

После того, как вы это сделаете, у вас будет вторая копия иерархии вашего сайта, содержащая любые изображения, на которые есть активные ссылки на любой странице, доступной при просмотре вашего сайта. Затем вы можете создать резервную копию исходного каталога изображений и заменить его копией wget. Далее, проследите за лог-файлами 404, относящимися к gif/jpg/png файлам. Надеюсь, это поможет.

13
ответ дан 4 December 2019 в 07:04
поделиться

Поиск неотмеченных изображений должен быть проще, чем CSS.

Просто найдите *.jpg *. png *gif с помощью глобуса, поместите эти имена файлов в словарь или массив и найдите эти имена снова в html, css, js файлах, удалите имя файла, если оно найдено, и вы получите неиспользуемый список, и переместите эти изображения в другую папку с такой же структурой каталогов (Это будет хорошо для восстановления на всякий случай)

В основном так, и, конечно же, имена файлов, которые зашифрованы/кодированы/обкуссированы не будут работать.

require "fileutils"

img=Dir.glob("**/*.jpg")+Dir.glob("**/*.png")+Dir.glob("**/*.gif")
data=Dir.glob("**/*.htm*")+Dir.glob("**/*.css")+Dir.glob("**/*.js")

puts img.length.to_s+" images found & "+data.length.to_s+" files found to search against"

content=""
data.each do |f|
    content+=File.open(f, 'r').read   
end

img.each do |m|
    if not content=~ Regexp.new("\\b"+File.basename(m)+"\\b")
        FileUtils.mkdir_p "../unused/"+File.dirname(m)
        FileUtils.mv m,"../unused/"+m
        puts "Image "+m+" moved to ../unused/"+File.dirname(m)+" folder"
    end
end

PS: Я использовал fileutils, потому что обычные makedirs и mv не работают в моей оконной версии рубина

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

Вот примеры результатов, которые я использовал в корневой папке sample rails в своих windows

---\ruby>ruby img_coverage.rb
5 images found & 12 files found to search against
Image depot/public/images/test.jpg moved to ../unused/depot/public/images folder
11
ответ дан 4 December 2019 в 07:04
поделиться

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

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

2
ответ дан 4 December 2019 в 07:04
поделиться

Если URL-адреса ваших изображений часто поступают из множества вычисляемых / конкатенированных строк и других вещей, которые трудно отслеживать программно в исходном коде, и ваше приложение активно используется, вы можете попробовать мягкий подход «приманки», например:

  • Переместите все активы в другой каталог, например / attic
  • Создайте пустой каталог / images (или то, как называется ваш каталог ресурсов).
  • Создайте файл .htaccess (если вы на Apache, конечно), который с помощью флага -f перенаправляет все запросы к несуществующим файлам изображений в сценарий
  • Сценарий копирует запрошенный файл из / чердак в каталог / images и отображает его
  • Следующий запрос к этому изображению перейдет непосредственно к изображению, потому что оно уже существует

После некоторого времени и достаточного использования все необходимые изображения должны были быть скопированы в каталог ресурсов.

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

6
ответ дан 4 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

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