• Как автоматизировать очистку кэша битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Увы, очищать папку через cron не лучшая идея. По факту Вы боретесь не с проблемой, а с симптомом.
    Почему разрастается папка кеша?
    1) У Вас очень большой и сложный сайт.
    Например при 10 тысячах товаров в одной категории, если Вы будете пытаться кешировать каждую страницу, то размер будет большой. Предположим на страницу с 10 товарами уходит 10КБ кеша (на самом деле, все зависит от верстки и может достигать и бОльшего размера), тогда общий кеш каталога будет 10КБ * 10 000 = ~100МБ (учетных, на самом деле около 90МБ).
    Теперь посчитаем, что может быть 2 вида отображения: списком или плиткой. Соответственно уже 180МБ. А если товаров не 10 тысяч, а 100 ? А если есть еще и фильтр и его результаты могут быть кешированы? И это мы посчитали только каталог и довольно малый размер кеша.

    Решение: подобрать время кеширования и увеличить дисковое пространство

    2) Неправильно определено время кеширования.
    Например: у Вас ttl кеша стоит 3 месяца. И даже если за 3 месяца на него никто не зашел, он все-равно хранится. Например у Вас очень объемный кеш (что очень плохо), который занимае 500КБ (а иной раз и 1 МБ), получается что этот 1МБ будет хранится на протяжении длительного времени, даже если к нему нет обращения.

    Решение: подобрать время кеширования (возможно где-то стоит уменьшить) и параметры компонентов (возможно что-то не стоит кешировать)

    3) Неправильно настроен кеш собственных или битриксовых компонентов.
    Например есть очень большой пунктик в битриксе с кешем меню - если указать MENU_CACHE_VARS (вроде так пишется, по памяти писал), то он будет под каждый набор параметров создавать кеш. И тогда кеш меню начинает сильно пухнуть и еще и кешироваться на длительное время.

    Решение: нужно проверить параметры кеширования в компонентах. Возможно в своих компонентах переписать или посмотреть на основании чего он формируется

    4) Ошибка с механизмом очищения кеша.
    Например, когда кеш не успевает удаляться, и накапливается. Таким образом происходит дублирование одного и того же кеша в разных компонентах.
    Ответ написан
    Комментировать
  • Чем плох Magento?

    kotomyava
    @kotomyava
    Системный администратор
    Он вполне хорош. Особенно, если сравнивать с битриксом.
    Разработчиков меньше, но они профессиональнее, в среднем, и найти вполне можно, так что это минусом сложно считать.

    Тем кто приводит примеры магазинов крупных сетей на битриксе: Вы же понимаете, что от битрикса там только название для маркетологов битрикса, а внутри всё переписано?
    Ответ написан
    Комментировать
  • Как писать API?

    KIVagant
    @KIVagant
    Разработчик web-сервисов
    1. Жесткая типизация и контроль входных и выходных данных. Много проблем получали, когда php-сервер отдавал string вместо int, например.
    2. Предусмотреть разный формат возвращаемых данных — json, xml и т.п. — на клиентсайде может оказаться не только ios.
    3. Предусмотреть перехват всех внутренних ошибок и исключений, чтобы клиент всегда получал логичный ответ вместо неожиданных ошибок.
    4. REST моден, но совершенно необязателен. После нескольких лет существования некоторых сервисов мы только сейчас начали вводить поддержку REST. Это нам не мешает разрабатывать популярные мобильные приложения на всех видах устройств.
    5. Изучите хорошие примеры сервисов и наоборот — ужасные примеры (Facebook). Никогда и ни за что не делайте, как у FB.
    6. Предусмотрите инструменты отладки.
    7. Сразу продумайте версионность. Выпустив однажды мобильное приложение уже нельзя будет просто поменять API.
    8. Можно сразу заложить инструменты кеширования и авторизации на уровень ядра API. Например, в одном приложении мы передавали oauth-токен в заголовках. Это позволило избавиться от постоянных проверок авторизации внутри модулей API, отдав это в родительские классы и управляя доступами через конфиги.
    И т.п.
    Ответ написан
    3 комментария
  • Как писать API?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Статей хватает, можете конечно написать, но врят-ли что-то-новое выйдет.

    Структуру методов, что и как должно возвращать лучше обсудите с iOS разработчиком, который будет потом имплеменить это дело. Если такого нету — максимально разбейте все на атомарные операции, упростите взаимодействие, прикиньте сами какие методы могут понадобиться (представьте что вы пишете API не для кого-то, а, например, для странички, которая через AJAX все выдерает).

    По поводу реализации — банальная сериализация вместо рендринга, больше отличий нету. Есть куча готовых компонентов которые хорошо подходят для сериализации туда и обратно. Свой такой компонент тоже пишется достаточно быстро.

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

    Я не видел ни одного RESTfull API для серьезных приложений, тобиш да, оно то REST но не полностью, так что заморачиваться тут не стоит. Достаточно просто обрабатывать какие-то базовые заголовки и GET/POST запросы. GET для выборок — тобиш данные в базе при запросе не меняются, разве что какие счетчики, а POST для создания записей в базе (по феншую результат работы функции должен возвращаться только HTTP заголовки, среди которых есть GET запрос с URI нового объекта, но на практике никто не париться и возвращает весь объект или его часть).

    Можно конечно воспользоваться SOAP апишками, но по опыту скажу что оно годно только при разработке оочень простых API, и толку от него мало. Если клиентом, конечно, будет приложение написанное на C# .NET — тогда смело SOAP и только SOAP, вам по сути разницы в реализации (имеется в виде по времени) минимум, а разработчику клиента будет намного проще. А вот на iOS с SOAP все достаточно печально.
    Ответ написан
    Комментировать
  • Как совместить Laravel и Angular?

    Vadiok
    @Vadiok
    Веб разработчик
    Я для шаблонов, которые подгружаются через роутинг Angular'а использую просто php вьюхи, без Blade.
    По данным для Angular - я передаю через апи, только в роуте у меня идет запрос на /data/что-то-там, а не /api/что-то-там. Пример куска роутинга в Laravel:
    // Данные для Angular
    Route::group(['prefix' => 'data'], function() {
    	// Пользователи
    	Route::group(['prefix' => 'user'], function() {
    		Route::get('current', 'UserController@getCurrent');
    		Route::get('settings', 'UserController@getSettings');
    		Route::post('settings', 'UserController@saveSettings');
    	});
    	// ...
    });

    В таком случае в контроллерах очень удобно просто возвращать объект модели, Laravel сам его отдаст в виде JSON.
    Ответ написан
    Комментировать
  • Какую концепцию структурирования приложения на Laravel лучше использовать?

    AmdY
    @AmdY
    PHP и прочие вебштучки
    Репозиторий это тоже сервис, RepositoryService. Оба ваши примера идентичны, и просто прячут вашу Eloquent модельку внутри себя, при этом спокойно её возвращают в return. Оба автора делают это без осознания зачем это надо и не получают никакого профита от этих телодвижений.

    Единственное что можно вынести из примеров - не использовать eloquent методы в контроллере, их нужно выносить в отдельный сервис или как минимум в отдельный метод модели. Например, у модели Post добавили бы метод findBySlug() или createCoupon($code, $amount, $maxRedemptions), этого достаточно было бы для инкапсуляции и последующего расширения. (хотя не решает проблему с торчащим наружу AR, но это уже другой вопрос)
    Ответ написан
    2 комментария
  • Дефис в доменном имени это хорошо или плохо?

    vvpoloskin
    @vvpoloskin
    Инженер связи
    Для поисковиков без разницы, для людей желательно, чтоб не больше одного дефиса. А вообще нужно думать, какой проект и для кого делаешь.

    Так, для компьютеризированной аудитории любые символы без разницы, скорее всего люди этой категории как минимум сохранят файл в избранное. И, как показал Menaskop в смежном ответе, действительно, домены такие есть и раскручены.

    Другое дело - отрасль удаленная от IT. Все же лучше сайт про рецепты тортов, поклейку обоев, рыбалку сделать без тире. В этом также достаточно убедиться, поискав сайты на бытовые темы в зоне .com. Вы увидите, что там домены уже идут из 3-4х слов, тире в большинстве случаев нет.

    Также надо задуматься - брендовый вы делаете ресурс или нет. В брендовом КОРОТКОМ тире допустимо, а иногда даже приветствуется. В обыкновенном менее желательно.

    В крайнем случае в дальнейшем при необходимости можно будет купить еще один домен и произвести склейку.
    Ответ написан
    Комментировать
  • Копирование чужого дизайна сайта

    Alexx_ps
    @Alexx_ps
    Да, на дизайн есть копирайт. Есть его автор, есть заказчик и между ними есть договор. Воруете дизайн — ждите письмо от юристов. Ну и в целом выглядеть это будет позорно.
    Ответ написан
    Комментировать
  • Участие в Open Source проектах

    @Fak3
    Никогда не понимал людей, ищущих «какой-нибудь опенсурс проект», чтобы поучастовать.
    Низачто не поверю, что есть люди, которые пользовались разным ПО и при этом не встречали проблем, которые им мешают достигать поставленную цель эффективно.
    Вам не приходило в голову начать с проблем, которые ВАМ мешают жить?
    Ответ написан
    5 комментариев