5

Myślałem przez chwilę o najlepszym rozwiązaniu i tyle, ile czytałem, coraz bardziej się mylę. Istnieje wiele różnych bibliotek i pomocników (większość z nich jest nieaktualna lub dla CI 1.x) i naprawdę potrzebuję twojej pomocy.Najlepszy sposób radzenia sobie z miniaturami obrazów na stronie z wiadomościami (niestandardowe CMS oparte na codeigniter)?

Mam niestandardowy CMS oparty na CodeIgniter 2.1.3, serwis informacyjny, który ma około 40-50 zdjęć na stronie głównej, ale 80% z nich to naprawdę małe miniatury w 3 różnych rozmiarach, a pozostałe 20% obrazy na stronie głównej są w 2 rozmiarach + w przypadku stron wewnętrznych, gdy wyświetlam wiadomości z kategorii ma jeden rozmiar miniaturek. W sumie będę potrzebował oryginalnego obrazu do wiadomości, + 5-6 miniatur wielkości dla strony głównej.

Jaki jest najmądrzejszy sposób radzenia sobie z tym? Będzie powiedzmy 10-50 nowych wiadomości dziennie.

  1. Czy nadal lepiej jest utworzyć 5-6 miniatur na obraz podczas przesyłania?
  2. Co z metodą "w locie"? Bardziej interesuję się tą metodą, ponieważ czytam, tylko pierwszy użytkownik wywoła bibliotekę/pomocnika, aby wygenerować miniatury, a dla innych miniaturki będą już utworzone, aby nie marnować procesora. A co z tą metodą? Czy to dobra praktyka?

Jakie techniki buforowania powinienem użyć dla tych, których potrzebuję?

Również zapomniałem zapytać, jak inny system CMS zajmuje się generowaniem miniaturek? Mam na myśli Wordpress, Drupal, Joomla itp.

Czy przechowują one predefiniowane rozmiary lub generują je w locie?

Myślę, że ich logika powinna być najlepsza, a może nie, ale chcę wprowadzić coś inteligentnego w moim CIP CodeIgniter.

Nie wspomniałem, ale myślę, że nie jest to ważne, używam CRUD spożywczego dla panelu administracyjnego.

Każda pomoc jest doceniana.

Odpowiedz

0

Uwielbiam sposób, w jaki Drupal to zarządza. W Drupalu 6 istniał moduł nazwany imagecache (obecnie znajduje się w jądrze w Drupalu 7, ale funkcjonalność jest bardzo podobna), który zasadniczo przechowuje ustawienia wstępne dla obrazów (rozmiary obrazu, transformacje, efekty ...) i kiedy użytkownik prosi o zdjęcie moduł generuje różne obrazy na podstawie ustawień wstępnych i wyświetla te obrazy. W ten sposób przesyłasz obraz, ale masz różne obrazy do różnych celów.

Moduł ma naprawdę przydatną funkcję, jeśli chcesz zmienić jedno ustawienie, możesz "przepłukać" wszystkie obrazy związane z tym ustawieniem, aby odwiedzający mogli zobaczyć zmiany.

Oczywiście istnieje wiele innych modułów Drupal związane imagecache lub obraz stylów, które dodają inne efekty, takie jak znaki wodne ...

Więcej informacji:

2

Najlepiej jest tworzyć obrazy w locie + używać CDN, takich jak Amazon Cloudfront, aby buforować zmienione wersje ns obrazu źródłowego.

Używam CodeIgniter od wielu lat do tworzenia stron internetowych, w których wiele różnych rozmiarów obrazów jest używanych na całej stronie. Na początku tworzyłem każdy potrzebny rozmiar z oryginalnego obrazu podczas procesu przesyłania (z łatwością mógłbym skończyć z więcej niż 5 miniaturkami). Okazało się, że zapewnia najlepszą wydajność - zawsze, gdy potrzebujesz obrazu o określonej wielkości, po prostu włącz go bez dodatkowego przetwarzania PHP. Zauważyłem jednak, że otrzymuję ogromną liczbę obrazów na serwerze, gdzie starsze mogą nie być nawet używane tak często (np .: artykuły starsze niż rok). Plus rozwijanie tego sposobu trwa dłużej.

Następnie zacząłem tworzyć obrazy w locie, najpierw za pomocą bibliotek zewnętrznych, a później opracowałem własny interfejs dla CodeIgniter. Oszczędza to dużo czasu, ponieważ podczas procesu wysyłania zapisujesz oryginalną wersję obrazu, nie martwiąc się o wersje o zmienionym rozmiarze. Podczas wyświetlania obrazu z przodu zwykle wystarczy podać określone wymiary wymaganego obrazu. Robiąc to, możesz nie tylko uzyskać 5-6 wersji obrazu, ale i tyle, ile potrzebujesz. Jest to również rozwiązanie na przyszłość, gdy zmieniasz wygląd swojej strony internetowej, gdzie potrzebne są obrazy o różnych rozmiarach! Co zrobiłbyś, gdy żadna z Twoich 5 opcji miniaturek nie jest już ważna i potrzebujesz różnych rozmiarów?

Masz rację, zmiana rozmiaru obrazu w locie może naprawdę wymagać użycia procesora (szczególnie w przypadku dużych obrazów), dlatego buforowanie jest koniecznością. Możesz przechowywać obrazy w pamięci podręcznej bezpośrednio na serwerze lub uzyskać na nich CDN. Aby utrzymać porządek na serwerze, normalnie uruchamiam zadanie cron, aby usuwać "w locie" zdjęcia starsze niż powiedzmy na tydzień. To oszczędza przestrzeń + nie powoduje szkód - ilekroć obraz jest potrzebny do wyświetlenia, po prostu zostanie odtworzony.

+0

Właśnie dlatego jestem bardziej do metody „w locie”, więc teraz proszę mi powiedzieć, co jest najlepszym sposobem, aby to zrobić i jak to zrobić , której biblioteki użyć, jak z niego korzystać, itp. – MarkC

+0

Możesz się z tym bawić: http://phpthumb.sourceforge.net/. Jednak okazało się, że jest to dość ciężka biblioteka i może spowodować trochę przetwarzania narzutowego. Nie jestem świadomy publicznie dostępnych w bibliotekach specjalnych specjalnie dla CodeIgniter i napisałem własne. Powiadom mnie, jeśli chcesz się na to rzucić. W przeciwnym razie możesz wyszukać biblioteki dla macierzystego PHP, a nie specjalnie dla CI; powinny być łatwe do integracji. – Aidas

+0

Połączyłem się z biblioteką specjalnie dla CI poniżej – stef