Поставщик Виртуального тракта отключает кэширование?

Язык Common LISP

  • Зовет его по имени: !
  • Хвост, рекурсивный
  • , язык Common LISP обрабатывает произвольно большие количества
(defun ! (n)
  "factorial"
  (labels ((fac (n prod)
             (if (zerop n)
                 prod
                 (fac (- n 1) (* prod n)))))
    (fac n 1)))

редактирование : или с аккумулятором как дополнительный параметр:

(defun ! (n &optional prod)
  "factorial"
  (if (zerop n)
      prod
      (! (- n 1) (* prod n))))

или как уменьшение, за счет большего объема потребляемой памяти и более концентрирования:

(defun range (start end &optional acc)
  "range from start inclusive to end exclusive, start = start end)
      (nreverse acc)
      (range (+ start 1) end (cons start acc))))

(defun ! (n)
  "factorial"
  (reduce #'* (range 1 (+ n 1))))
8
задан downatone 1 October 2009 в 18:43
поделиться

1 ответ

Возвращение значения NULL по существу сообщает ASP.NET, что у вас нет никакой зависимости - следовательно, ASP.NET не будет перезагружать элемент.

Вам нужно вернуть действительную зависимость, например

 public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart)
    {
        return new CacheDependency(getPhysicalFileName(virtualPath));
    }

Более правильный подход - убедиться, что вы обрабатываете только свои собственные зависимости кеша (это схематический пример):

 public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart)
    {
        if (isMyVirtualPath(virtualPath))
            return new CacheDependency(getPhysicalFileName(virtualPath));
        else
            return new Previous.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
    }
21
ответ дан 5 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

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