Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Обобщённый метод кэширования, который может использоваться для кэширования объектов любых ссылочных типов (например, коллекций объектов, полученных на основе сгенерированных в QP классов LINQ to SQL). Также поддерживается кэширование NULL-значений.
На основе метода построены специализированные методы кэширования в сборке Quantumart. dll.
Примечание: в веб-среде возвращаемый объект является общим для нескольких потоков, поэтому его изменение может привести к непредсказуемым последствиям. Поэтому при необходимости модифицировать такие объекты рекомендуется синхронизировать доступ к ним. В то же время использование таких объектов для чтения в большинстве случаев потокобезопасно (предварительно рекомендуется изучить документацию на конкретный тип).
Примечание: для кэширования значимого типа (value type) необходимо выполнить принудительную упаковку (например, число следует преобразовать в строку).
Параметры:
Название | Описание |
fillAction | Ссылка на метод заполнений кэша. При использовании версии fillAction с параметром туда передается параметр key метода GetCachedEntity, что позволяет использовать один и тот же метод заполнения для получения нескольких объектов. |
interval | Интервал кэширования. Примечание: если значение не задано, то используется значение параметра InternalExpirationTime из конфигурационного файла веб-сайта. |
key | Ключ, под которым данные хранятся в кэше. При использовании версии fillAction с параметром может использоваться для изменения логики метода заполнения. |
Пример использования:
DBConnector cnn = new DBConnector();
List<Banner> banners = cnn. CacheManager. GetCachedEntity<List<Banner>>(pageAddress, 10, GetPageBanners);
В примере GetPageBanners – метод, возвращающий List<Banner>, который будет вызван только при заполнении кэша.
Метод GetCachedData
public DataTable GetCachedData(string queryString)
public DataTable GetCachedData(string queryString, double cacheInterval)
Выполняет указанный SQL-запрос и возвращает DataTable c сохранением результата в кэше.
Продолжительность кэширования определяется значением параметра cacheInterval. При отсутствии значения используется значение параметра InternalExpirationTime из конфигурационного файла веб-сайта.
Внимание: в веб-среде возвращаемая таблица является общей для нескольких потоков (пользовательских сессий), поэтому её изменение может привести к непредсказуемым последствиям в других потоках. Например, нельзя менять свойство RowFilter у DefaultView. Вместо этого нужно создать новый DataView на основе DataTable и менять свойство RowFilter у него.
Ключ кэширования строится на основании текста запроса. К ключу добавляется префикс, в который входят имя БД и имя сервера БД, что позволяет работать с несколькими экземплярами класса в одной веб-среде.
Примечание: при необходимости выполнить запрос без кэширования следует использовать метод GetRealData.
Метод GetCachedFileContents
public string GetCachedFileContents(string path)
Считывает текстовый файл по заданному пути и сохраняет его в кэше.
Внимание: при изменении файла кэш сбрасывается.
Методы для чтения данных статей
Метод GetContentData
public DataTable GetContentData(string siteName, string contentName, string fields, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, bool cacheResult, double cacheInterval, bool useClientSelection, bool withReset)
public DataTable GetContentData(string siteName, string contentName, string fields, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, bool cacheResult, double cacheInterval)
public DataTable GetContentData(string siteName, string contentName, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive)
public DataTable GetContentData(string siteName, string contentName, string fields, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive)
Метод является упрощённым вариантом получения данных из контента (вместо более сложного способа для объекта «Publishing Container»).
Внимание: метод не выполняет автоматическую замену заполнителей, поэтому при использовании текстовых полей, которые могут содержать URL, нужно вызывать метод FormatField.
Примечание: метод возвращает из кэша не саму таблицу, а ее копию, так что её можно изменять.
Примечание: для поля «Связь» типов M2M и M2O метод возвращает данные, которые хранятся в таблице контента (идентификатор связи для M2M и идентификатор базового поля для M2O). Используя эти данные, можно получить реальные данные связей статьи вызовом метода GetContentItemLinkIDs.
Обязательные параметры:
Название | Описание |
siteName | Имя сайта. |
contentName | Имя контента. |
whereExpression | Пользовательская часть предложения WHERE SQL-запроса. Примечание: аналог поля «Фильтр» (Filter) для объекта «Publishing Container». |
orderExpression | Предложение ORDER SQL-запроса. Примечание: аналог поля «Выражение динамической сортировки» (Dynamic order expression) для объекта «Publishing Container». |
startRow | Параметр постраничного вывода. Примечание: аналог поля «Номер первой отображаемой записи» (First article number) для объекта «Publishing Container». |
pageSize | Параметр постраничного вывода. Примечание: аналог поля «Количество» (Count) для объекта «Publishing Container». |
totalRecords | Количество записей с учётом фильтрации, но без учёта постраничного вывода. |
useSchedule | Дополнительная фильтрация статей, для которых выставлено расписание. Примечание: аналог поля «Использовать расписание статей» (Use Articles Schedule) для объекта «Publishing Container». |
statusName | Имя статуса. Примечание: аналог поля «Статус» (Status) для объекта «Publishing Container». |
showSplittedArticle | Указывает, какую версию статьи возвращать. При значении 0 возвращается опубликованная версия статьи (Live-режим), иначе – текущая (Stage-режим). |
includeArchive | Определяет, включать ли архивные статьи в результат. Примечание: аналог поля «Показать архивированные» (Show archived) для объекта «Publishing Container». |
Необязательные параметры:
Название | Описание |
fields | Набор полей, которые необходимо вернуть. При отсутствии значения возвращаются все поля. Примечание: по умолчанию служебные поля не попадают в результат, при необходимости их нужно указывать. |
cacheResult | Указатель, следует ли кэшировать результат. Значение по умолчанию – false. |
cacheInterval | Продолжительность кэширования. Примечание: по умолчанию используется значение параметра InternalExpirationTime из конфигурации веб-сайта. |
useClientSelection | При значении true фильтрация, сортировка и постраничный вывод осуществляются на стороне клиента, что позволяет уменьшить объём кэшируемых данных. Примечание: фильтрация на стороне клиента поддерживает только часть возможностей серверной. Значение по умолчанию – false. |
withReset | При значении true для вызова осуществляется принудительный сброс кэша и его повторное заполнение. Значение по умолчанию – false. |
Пример:
long total = 0;
DataTable dt = cnn. GetContentData("Sandbox NET", "Events", "[content_item_id], [Title]", "[Location] = 1662", "[Modified] DESC", 1, 20, ref total, 1, "Published", 0, 0);
Метод GetCachedContentData
public DataTable GetCachedContentData(string siteName, string contentName, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive)
public DataTable GetCachedContentData(string siteName, string contentName, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, bool useClientSelection)
public DataTable GetCachedContentData(string siteName, string contentName, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, double cacheInterval)
public DataTable GetCachedContentData(string siteName, string contentName, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, double cacheInterval, bool useClientSelection)
public DataTable GetCachedContentData(string siteName, string contentName, string fields, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive)
public DataTable GetCachedContentData(string siteName, string contentName, string fields, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, bool useClientSelection)
public DataTable GetCachedContentData(string siteName, string contentName, string fields, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, double cacheInterval)
public DataTable GetCachedContentData(string siteName, string contentName, string fields, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, double cacheInterval, bool useClientSelection)
public DataTable GetCachedContentData(string siteName, string contentName, string fields, string whereExpression, string orderExpression, long startRow, long pageSize, ref long totalRecords, byte useSchedule, string statusName, byte showSplittedArticle, byte includeArchive, bool useClientSelection, bool withReset)
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |


