문제

ActiveRecord 행 (아바이스닉)의 컬렉션을 캐싱하고 있습니다.개미 메모리 프로파일 러를 사용하여 캐시를 볼 때, 캐시하고 싶은 ActiveRecord에 대한 일부 관련 테이블도 캐시됩니다.이렇게하면 캐시 된 항목이 캐시 된 테이블이 추가로 (필요 없음) 때문에 캐시 된 항목을 매우 크게 만듭니다.

이를 방지하는 방법에 대한 아이디어는 무엇입니까?

도움이 되었습니까?

해결책

활성 레코드 클래스에서 관계의 게으른 로딩을 수정하거나 제거해야합니다.

게으른 로딩 동작은 activerecord.tt 템플릿에 의해 생성됩니다. 최신 버전 :

        #region ' Foreign Keys '
<#
            List<string> fkCreated = new List<string>();
            foreach(FKTable fk in tbl.FKTables)
            {

                if(!ExcludeTables.Contains(fk.OtherTable)){
                    string propName=fk.OtherQueryable;
                    if(fkCreated.Contains(propName))
                    {
                        propName=fk.OtherQueryable+fkCreated.Count.ToString();
                    }

                    fkCreated.Add(fk.OtherQueryable);


#>
        public IQueryable<<#=fk.OtherClass #>> <#=propName #>
        {
            get
            {

                  var repo=<#=Namespace #>.<#=fk.OtherClass#>.GetRepo();
                  return from items in repo.GetAll()
                       where items.<#=CleanUp(fk.OtherColumn)#> == _<#=CleanUp(fk.ThisColumn)#>
                       select items;
            }
        }

<#
                }
            }

#>
        #endregion
.

이 전체 영역을 제거하고 과도한 캐싱이 해결되었는지 확인하려고합니다.물론 게으른 로딩 행동에 의존하면 지금 주소를 알려야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top