Данные кэша на СЕССИИ PHP или запрос от дб каждый раз?

Можно использовать этот простой модуль:

https://github.com/nishant-boro/django-rest-framework-download-expert

Этот модуль обеспечивает простой способ служить файлам для загрузки в платформе отдыха django с помощью модуля Apache Xsendfile. Это также имеет дополнительную функцию обслуживания загрузок только пользователям, принадлежащим конкретной группе

7
задан Andrew 27 September 2009 в 05:58
поделиться

2 ответа

Я помню, что это поведение было своего рода изменением в последнюю минуту. В ранних бета-версиях .NET 2.0 Nullable был «нормальным» типом значения. Упаковка нулевого значения int? превратила его в упакованный int? с логическим флагом. Я думаю, что причина, по которой они решили выбрать нынешний подход, заключается в последовательности. Скажите:

int? test = null;
object obj = test;
if (test != null)
   Console.WriteLine("test is not null");
if (obj != null)
   Console.WriteLine("obj is not null"); 

В первом подходе (box null -> boxed Nullable ) вы не получите «test is not null», но вы получите: объект не равен нулю », что странно.

Кроме того, если бы они поместили значение, допускающее значение NULL, в boxed-Nullable :

int? val = 42;
object obj = val;

if (obj != null) {
   // Our object is not null, so intuitively it's an `int` value:
   int x = (int)obj; // ...but this would have failed. 
}

Кроме того, я считаю, что текущее поведение имеет смысл для таких сценариев, как значения базы данных, допускающие значение NULL (подумайте о SQL -CLR ... )


Пояснение:

Весь смысл предоставления типов, допускающих значение NULL, состоит в том, чтобы упростить работу с переменными, которые не имеют значимого значения. Они не хотели выделять два разных, не связанных между собой типа. int? должен вести себя более или менее как простой int . Вот почему C # предоставляет поднятые операторы.

Таким образом, при распаковке типа значения в версию, допускающую значение NULL, среда CLR должна выделить объект Nullable , инициализировать поле hasValue равным true и установить для поля значения то же значение, что и в типе значения в штучной упаковке. Это влияет на производительность вашего приложения (выделение памяти во время распаковки).

Это неверно. CLR должна выделить память в стеке для хранения переменной независимо от того, допускает ли она значение NULL. Там' размещение его в сеансе должно быть вполне нормальным

  • Если у вас действительно так много пользователей, у вас, вероятно, возникнут другие проблемы с масштабируемостью, и вы, скорее всего, все равно будете использовать что-то вроде memcached; это означает, что у вас будет другой способ кэширования; -)
  • В качестве примечания: если вы выполняете один и тот же запрос снова и снова, ваш сервер БД должен кэшировать его сам (для MySQL он будет помещен в " кеш запросов "); так что, я полагаю, это было бы не так плохо, как вы думаете - даже если бы не так сильно оптимизировано ^^

    если вы выполняете один и тот же запрос снова и снова, ваш сервер БД должен кэшировать его самостоятельно (для MySQL он будет помещен в « кеш запросов »); так что, я полагаю, это было бы не так плохо, как вы думаете - даже если бы не так сильно оптимизировано ^^

    если вы выполняете один и тот же запрос снова и снова, ваш сервер БД должен кэшировать его самостоятельно (для MySQL он будет помещен в « кеш запросов »); так что, я полагаю, это было бы не так плохо, как вы думаете - даже если бы не так сильно оптимизировано ^^

    6
    ответ дан 7 December 2019 в 07:48
    поделиться

    Это зависит от того, что вы re обработчик сеанса есть. Вашим обработчиком сеанса может быть MySQL, и поэтому вопрос будет не в том, что лучше, а в том, как оптимизировать обработку сеанса.

    Обработчиком сеанса PHP по умолчанию являются файлы, но его можно довольно легко изменить на mysql.

    Если вы ' Если вы говорите о данных, не относящихся к пользователю, просто сохраните их в БД. Позаботьтесь об оптимизации, если позже у вас возникнут проблемы. Обычно гораздо выгоднее использовать более совершенный шаблон проектирования, чем думать об оптимизации заранее. Разработайте свой код так, чтобы вы могли легко использовать другой обработчик для хранения, и у вас не было проблем с оптимизацией позже.

    Если это зависит от пользователя, используйте сеанс, но при необходимости используйте соответствующий обработчик сеанса.

    но при необходимости используйте соответствующий обработчик сеанса.

    но при необходимости используйте соответствующий обработчик сеанса.

    1
    ответ дан 7 December 2019 в 07:48
    поделиться
    Другие вопросы по тегам:

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