сайтът web2py не зарежда всички изображения/видеоклипове (особено по-големите)

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


Настроих уебсайт, управляван от база данни, използвайки web2py, в който записите са само HTML текст. Повечето от тях ще съдържат img и/или video тагове, които сочат към относителни URL адреси; тези файлове се съхраняват в папки с модела на адрес static/content/article/<article-name> и base href на документа се задава чрез контролера, за да работят тези връзки. И така, изображенията се съхраняват и препращат директно, без всички машини за качване/изтегляне.
Тествам го локално и използвам сървър на Rocket, защото не ми е разрешено да инсталирам Apache на този компютър.

Проблемът:
Всичко работи добре, освен, както изглежда, когато се изискват няколко „големи“ файла. Под „големи“ имам предвид, че 4Mb файлове бяха достатъчни, което всъщност не е много (и мисля, че малко по-малки файлове биха довели до същия резултат). Почти съм сигурен, че връзките не са повредени, тъй като 1) чрез копиране/поставяне на техните URL адреси в браузъра те се показват нормално, 2) изображенията/видеоклиповете изглеждат добре/счупени произволно, когато опреснявам страницата и 3) понякога видеоклип зарежда до определен момент и след това спира, а инспекторът на браузъра показва сигнал „неуспех“. Когато замених тези файлове с по-малки (всеки с дузина kb), всички се заредиха. Друго нещо, което трябва да имате предвид е, че понякога отнема наистина много време, докато страницата приключи зареждането (от 2 секунди до няколко минути).

Въпросите:

  • Това ли е най-простият/оптимален начин за свършване на работата? Знам, че web2py има някои удобни функции като полета за качване, но не знам как мога да направя тези файлове без усилие посочени в документа, като се има предвид, че ще има някои специални функции в такива страници, включващи статичните файлове. Така че решението, което измислих досега, беше да създам директория, чието име е равно на записа и да съхранявам файловете там, както казах преди. Прекалено ли е, като се има предвид какво може да предложи web2py?

  • Ако отговорът на първия въпрос е нещо като „да“, тогава (очевиден въпрос) какво може да е причината за проблема и как да го поправя? Има ли нещо общо с факта, че web2py изпраща статични файлове на парчета от 1Mb? Може ли да е сървърът на Rocket? Или защото го тествам локално?

Благодаря предварително!


person dev    schedule 11.12.2013    source източник


Отговори (1)


Трудно е да ти отговоря без да знам някои подробности...

Къде се хоства вашето приложение Web2py? Използвате ли apache? nginx? Разполагахте ли с помощта на скрипт за внедряване в една стъпка? (http://web2py.googlecode.com/hg/scripts/setup-web2py-ubuntu.sh)

Но във всеки случай можете (трябва) :

  • Конфигурирайте Apache/Nginx да обслужва вашите статични файлове директно (файлове в /YourApp/static/.). Вижте скриптовете "setup-web2py-" в папката "scripts" за повече информация
  • Използвайте scripts/zip_static_files.py, за да създадете gzipped версии на вашите статични файлове. Можете да създадете cron за изпълнение на "python web2py.py -S myapp -R scripts/zip_static_files.py" Повече подробности за ефективността в книгата: http://web2py.com/books/default/chapter/29/13/deployment-recipes?search=static+files#Efficiency-and-scalability
person espern    schedule 11.12.2013
comment
Всъщност отговорих на тези въпроси, всичко в едно изречение: Тествам го локално и използвам сървър на Rocket, защото не ми е позволено да инсталирам Apache на този компютър. Дори попитах дали нещо от това причинява проблема. Както и да е, стартирам го на Windows, използвайки web2py.exe, защото това е единственият начин да го тествам на този компютър. - person dev; 11.12.2013
comment
Знам, че това не помага много... Би било достатъчно добре да знам дали има вероятност да бъде решен, когато разположа на производствения сървър. Благодаря за отговора! (И съжалявам за втория коментар) - person dev; 11.12.2013
comment
Тествах с 18MB изображение и ракетата нямаше проблеми да го обслужи... Може би имате грешка в приложението си. Предлагам ви да опаковате минимално приложение и да го публикувате в групата web2py тук: групи .google.com/forum/?fromgroups#!forum/web2py Във всеки случай, обслужването на 4MB изображения във вашето уеб приложение не е много добра идея. Трябва да помислите за намаляване на размера с нещо като: from PIL import Image im = Image.open(pathfilename) im.thumbnail((600,600),Image.ANTIALIAS) im.save(pathfilename) - person espern; 12.12.2013
comment
Вижте кода в долната част на тази страница: web2pyslices.com/slice/show/1613/ - person espern; 12.12.2013
comment
хм, не знаех за такава процедура с помощта на PIL, много хубаво. Ще го пробвам! Освен това не съм сигурен защо се случи това, но тествах отново същия проект и той работи добре. Предполагам, че отговорът е глупаво по-прост, отколкото очаквах: Може би просто компютърът ми е твърде бавен и му липсва памет, генерира грешка при изчакване или нещо подобно. Както и да е, благодаря отново! - person dev; 15.12.2013