одно из электронных писем моего приложения постоянно отмечалось как спам. это был HTML с единственной ссылкой, которую я отправил как HTML в теле с типом текста/содержимого HTML.
мое самое успешное разрешение к этой проблеме должно было составить электронную почту, таким образом, было похоже, что это было сгенерировано почтовым клиентом.
я изменил электронную почту, чтобы быть многослойным/альтернативным документом пантомимы, и я теперь генерирую и части текста/плоскости и текста/HTML.
электронная почта больше не обнаруживается как спам перспективой.
Трудно сказать. 4000 строк - это не так уж и много в области синтаксического анализа файлов. С точки зрения управления кодом, это становится громоздким, но вы вряд ли увидите заметную разницу в производительности, разбив ее на 2, 5 или 10 файлов, а страницы будут включать только те, которые им нужны. (это лучшая практика кодирования, но это отдельная тема). Разница между количеством прочитанных строк и количеством файлов, которые анализатор должен открыть, не кажется достаточно большой, чтобы гарантировать что-либо существенное. Моя первая реакция такова, что, вероятно, вам не стоит беспокоиться об этом.
С другой стороны, я работал над проектом корпоративного уровня, в котором некоторые операции имели include ()
дерево, которое часто расширялось до сотен файлов.
Я думаю, было бы лучше, если бы вы можете разделить файл функций на компоненты, соответствующие каждой странице; и вызовите эти компоненты на соответствующих страницах. Только мои 2 цента!
p / s: Я любитель PHP и пытаюсь создать сайт на PHP; Никакими функциями не пользуюсь. Не могли бы вы рассказать мне, какие функции вам понадобятся для сайта?
Если вы загружаете файл из 4000 строк и используете, возможно, 1 функцию, которая равна 10 линий, то да, я бы сказал, что это неэффективно. Даже если вы использовали множество функций из 1000 объединенных строк, это все равно неэффективно.
Я предлагаю сгруппировать связанные функции вместе и хранить их в отдельных файлах. Таким образом, если страница имеет дело, например, только с функции базы данных вы можете загрузить только из файла / библиотеки функций базы данных.
Еще одна причина разделения функций - удобство обслуживания. Если вам нужно изменить функцию, вам нужно найти ее в моналитическом включаемом файле. У вас также могут быть функции, которые очень, очень похожи, но даже не осознают этого. Сортировка функций по тому, что они делают, позволяет сравнивать их и избавляться от ненужных вещей или объединять две функции в одну функцию общего назначения.
По моему опыту, наличие большого включаемого файла, который включается повсюду, может фактически убить производительность. Я работал над браузерной игрой, в которой все правила игры были динамически сгенерированным PHP (среди прочего), а файл весил около 500 КиБ. Это определенно повлияло на производительность, и мы рассматривали возможность создания расширения PHP.
Однако, как обычно, я бы сказал, что вы должны делать то, что делаете сейчас, пока это не проблема производительности, а затем оптимизировать по мере необходимости.
В большинстве случаев ввод-вывод диска - это то, что убивает ваш сервер, поэтому я думаю, что чем меньше файлов вы получите с диска, тем лучше. Кроме того, если можно установить APC, файл будет сохранен в скомпилированном виде в памяти, что является большим преимуществом.
Если вы можете установить расширения на свой сервер, вам следует взглянуть на APC ( см. Также ).
Это, кстати, бесплатно ;-); но вы должны быть администратором своего сервера, чтобы установить его; поэтому он обычно не предоставляется на виртуальном хостинге ...
Это то, что называется «кеш-памятью кода операции».
В основном, когда вызывается сценарий PHP, происходят две вещи:
APC сохраняет коды операций в ОЗУ; поэтому файл не нужно перекомпилировать каждый раз при его вызове - и это здорово как для загрузки процессора, так и для производительности.
Чтобы ответить на вопрос немного подробнее:
Как правило, с точки зрения управления файлами лучше разбивать файлы на более мелкие, потому что вам нужно загружать только те файлы, которые вы действительно используете. Но для 4000 строк это, вероятно, не будет иметь большого значения.
Я бы предложил решение, подобное этому
function inc_lib($name)
{
include("/path/to/lib".$name.".lib.php");
}
function inc_class($name)
{
include("/path/to/lib".$name.".class.php");
}