Задать вопрос
  • Как люди себе представляют натяжку лендингов на вордпресс?

    Самый простой способ - поставить плагин типо ACF и с его помощью сделать редактируемым из админки каждый блок.
    Ответ написан
    Комментировать
  • Heroku or Digital Ocean?

    На сколько я знаю, нет. Heroku не позволяет делать подобные вещи как на DO. Исходный код заливается через консольную программку и вообще по-моему все делается в консоли. Прямого доступа к облаку вы не получите.
    Вот кстати доки, как это делается https://devcenter.heroku.com/categories/deployment
    Ответ написан
    5 комментариев
  • Вопрос по подключению системы кэширования?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Почитайте, optimization.guide и вот вам немного теории:

    Кешировать можно:
    • целиком всю страницу (для каждой страницы своя запись в кеше)
    • отдельные части сайта


    Кешировать можно в файлах:
    • генераруя готового html
    • генерируя html+php, так работают smarty и прочие шаблонизаторы собирая множество шаблонов в один
    • в виде бинарного содержимого, сюда и готовый html и готовые значения вычислений и прочее
    • в виде сериализованного массива с чем угодно, от предыдущего пункта отличается только форматом хранения


    Кешировать можно в базе:
    • в mysql/postgresql и прочих SQL - будет храниться на диске и горячие данные в памяти
    • в mysql/postgresql и прочих SQL в in-memory таблицах - будет храниться в оперативке, но без дополнительных усилий кеш пропадёт при рестарте сервера
    • в in-memory базах данных, часто это memcache, redis и прочее - опять таки выключили сервер - данные пропали
    • в in-memory базах данных с сохранением на диск, это Tarantool, memcachedb и прочие если там заявлена такая функциональность


    Так же можно:
    • кешировать всё кроме вставок динамики
    • кешировать куски вставляя их в динамику

    Это два противоположных подхода которые при особом желании можно смешивать в рамках одного проекта.

    Обновлять кеш можно:
    • при каждом запросе проверяя что старый кеш устарел
    • предкеширование - отдельным кроном/демоном/сервисом генерировать кеш раз в N минут
    • по мере изменения данных сбрасывать кеш и следующий запрос сгенерирует новый
    • по мере изменения данных сбрасывать кеш путём генерации сразу нового и замены старого на новый


    Кеш можно хранить:
    • на том же сервере что и сайт - нет задержек в сети, но зато ресурсы теже, CPU, диск, оперативная память
    • на внешнем сервере - задержки в сети, зато ресурсы отдельно


    Можно совмещать разные виды кеширования для разных данных. Можно кешировать только результат работы функций (вычисления, данные), а шаблоны не трогать, можно вместе с шаблонами, но тогда каждое изменение шаблонов повлечёт сброс всего кеша где он участвует.

    Если используете CMS/CMF - посмотрите готовые плагины для кеширования. Если у вас не sharing-хостинг с мини-сайтом - озаботтесь профилированием (xhproof) и мониторингом, это поможет понять где и что кешировать.

    Так же стоит рассмотреть кэширование байт-кода:
    • OpCache
    • APC
    • XCache

    Стоит прочитать вот эту статью:
    Сравнение скорости исполнения кода Drupal для PHP 5.3-5.6 и 7.0. «Битва оптимизаторов кода» apc vs xcache vs opcache https://habrahabr.ru/post/264775/

    Так же стоит:
    • увеличить буферы в MySQL (если памяти много)
    • потюнить другие системы, например поставить nginx вместо apache, раздавать статику с другого хоста
    • и конечно же - посмотреть как долго работают SQL запросы и по возможности их облегчить


    Кеширование в MySQL с использованием HandlerSocket:
    • данные хранятся в MySQL innodb базе, а значит чтение и запись можно делать как по старинке через SQL так и через HandlerSocket
    • можно сделать любое количество колонок, лишь бы это позволял MySQL
    • быстрая вставка
    • быстрая выборка
    • бинарный протокол передачи данных
    • есть несколько библиотек для PHP, как относительно новых так и старых
    • в Percona Server (форк MySQL) HandlerSocket.so есть в поставке по умолчанию, разве что нужно включить
    • в MySQL необходимо собрать HandlerSocket самостоятельно и включить в MySQL


    Можно почитать вот тут:
    Ответ написан
    3 комментария
  • Как лучше всего организовать мультиязычность на WordPress?

    Punkie
    @Punkie
    Я использую WPML с выводом языков в поддомены. Типа ru.site.com для русского и site.com для англ. Удобно.
    Ответ написан
    5 комментариев
  • Создание роутера php. Другой способ разборки url?

    @mr_ko
    Javascript, Node.js. React.js, Vue.js, Wordpress
    А не проще ль не городить велосипедов и взять какую то готовую библиотеку? Наприме https://github.com/nikic/FastRoute
    Ответ написан
    Комментировать
  • Сложно ли новичку создать сайт на Drupal?

    andead
    @andead
    друпал девелопер, фрилансер
    В одиночестве на друпале вы такое в ближайшей перспективе не осилите
    Ответ написан
    Комментировать
  • Как автоматом пронумеровать строки php?

    @Anar4you
    Циклом:
    for ($i = 1; $i <= 10; $i++) {
    echo $i;
    }
    Ответ написан
    Комментировать
  • Routing and URL Creation как разобраться?

    SamDark
    @SamDark
    Yii2 core team
    Для начала чуть теории:

    1. Внутри фреймворка путь представляется внутренним маршрутом: controller/action + массив параметров.
    2. Фреймворк строит URL и разбирает URL на основе правил URLManager.
    3. Правило задаёт связь шаблон URL → внутренний маршрут.

    Теперь посмотрим, что у нас.

    1. Допустим, у нас посты. У постов есть category_id.
    2. Выводит их список PostController::actionCategory.
    3. Параметр, который паредаётся — category_id.

    Начнём с контроллера:

    class PostController extends Controller
    {
        public function actionCategory($category_id)
        {
             $posts = Post::find()->where(['category_id' => $category_id])->all();
             return $this->render('category', ['posts' => $posts]);
        }
    }


    Далее прописываем следующее правило в конфиг в components → urlManager → rules:

    '<category_id>' => 'post/category',

    Создать URL на это дело можно так:

    echo Url::to(['post/category', 'category_id' => 42]);
    Ответ написан
    Комментировать
  • Как остановить двигающися слайдер?

    AloneCoder
    @AloneCoder
    [object Object]
    У всего многообразия всевозможных слайдеров, а особенно среди тех что подходят для вордпресса, есть такая незадокументированная функция slideByClickLikeABoss
    Ответ написан
    1 комментарий