ob_start PHP можно назвать больше затем однажды?

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

class myObj(object):
   def myMethod(cls)
     ...
   myMethod = classmethod(myMethod) 

или использование декоратор

class myObj(object):
   @classmethod
   def myMethod(cls)

Для статических свойств.. Его время Вы ищете некоторое определение Python.. переменная может всегда изменяться. Существует два типа их изменяемы и неизменны.. Кроме того, существуют атрибуты класса и атрибуты экземпляра.. Ничто действительно как статические атрибуты в смысле Java & C++

, Почему статический метод использования в смысле pythonic, если это не имеет никакого отношения вообще к классу! На вашем месте я или использовал бы classmethod или определил бы метод, независимый от класса.

7
задан JasonDavis 29 July 2009 в 04:30
поделиться

2 ответа

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

Из руководства : «Буферы вывода можно наращивать, то есть вы можете вызывать ob_start (), пока активен другой ob_start (). Просто убедитесь, что вы вызываете ob_end_flush () соответствующее количество раз. Если активны несколько функций обратного вызова вывода, вывод фильтруется последовательно через каждую из них в порядке вложенности »

15
ответ дан 6 December 2019 в 11:51
поделиться

Вы говорите следующее:

Я хочу использовать ob_start ("ob_gzhandler"); для сжатия CSS files

Я бы предпочел обслуживание и сжатие файлов JS / CSS (ну, статических) - это задача веб-сервера (например, Apache), а не PHP.

Об этом вы можете прочитать на ] mod_deflate - по крайней мере, если вы используете Apache 2.

все файлы на моем сайте загружаются (включен) через индексный файл

Это действительно необходимо? Таким образом, у вас PHP работает без видимой (?) Причины.
(Обратите внимание, что даже если файлы CSS / JS обслуживаются через PHP, Apache должен иметь возможность сжимать их с помощью mod_deflate ; то же самое верно и для HTML, JSON, ... кстати)

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

  • у вас может быть связка "PHP серверы », для обработки страниц PHP
  • и одного или двух« серверов статических файлов », для сервера только CSS / JS / изображений и облегчения нагрузки на ваши« серверы приложений »; на них нет необходимости в PHP; вы также можете использовать что-то вроде lighttpd вместо Apache


. При этом ob_start говорит следующее:

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

Итак, я думаю, что ответ на ваш вопрос - «да»: -)

2
ответ дан 6 December 2019 в 11:51
поделиться
Другие вопросы по тегам:

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