2013-03-18 6 views
1

MVC 4/SQL 2012/Entity Framework 5 응용 프로그램에서 데이터베이스에 업로드 된 모든 파일을 단일 테이블에 저장했습니다.ASP.NET MVC 4의 캐시 파일

public partial class FileController : Controller { 
    public virtual ActionResult Get(Guid key) { 
    // Get file from database and return File 
    } 
} 

무엇 캐시 전략은 내가 사용할 수 있습니까, MVC에서이 파일을 다음과 같이

나는 다음 FileController에서 액션 가져가?

ETags를 사용해야합니까? 방법?

누군가가 제발 도와 줄 수 있습니까?

, 감사합니다

미구엘

+0

"for these files"? 더 구체적으로 설명하고 이해를 돕기 위해 더 설명 할 수 있습니까? – faizanjehangir

+0

기본적으로 File/Get/c7eb1f1c-7cbe-46ed-8ace-05cdaa1bc46c에 액세스 할 때 ID = c7eb1f1c-7cbe-46ed-8ace-05cdaa1bc46c 파일을 데이터베이스에서로드하고이를 반환합니다. 따라서 "for these files"라고 말하면이 작업에서 반환하는 모든 파일을 의미합니다. 이게 당신이 요구 한 것입니까? –

답변

2

내가 ETag를를 사용하여 사용자의 파일 이름을 식별 할 수있는 현명한 선택이 될 것입니다 생각하지 않습니다. 그들에게 장단점이 있으므로, etags에 관해서는 this article을 읽으십시오.

결과 집합을 캐시하는 방법에는 여러 가지가 있습니다. 하지만 캐시 된 ORM 개체를 처리 할 때는 일반적으로 캐시 된 항목이 제거되거나 파일에 변경 사항이있을 때 업데이트되지 않으므로이 부분을 직접 처리해야하므로주의해야합니다. 어느 쪽이든 새로 고칠 필요가있는 캐시 된 데이터의 지속 기간을 설정할 수 있습니다.

데이터 캐싱을 위해 .NET MVC4의 기본 제공 기능을 아직 접하지 못했지만 사용자 지정 API를 직접 작성하거나 기존 작업을 사용/수정하여 필요한 작업을 수행 할 수 있습니다. 이 경우에 this post이 도움이 될 수 있습니다. 파일 이름에 GUID 키를 사용하는 경우 etags 및 uid가 나란히 표시되는 규칙은 없습니다. 언제든지 원하는 방식으로 데이터를 캐시 할 수 있습니다. Steve's blog도 살펴보고 MVC와 함께 엔티티 프레임 워크를 사용하고 있습니다.

편집 : 클라이언트 브라우저에

캐싱도 걸을 수있는 얇은 얼음입니다. 그것은 모두 유형, 기간, 민감도 및 가장 중요한 것은 사용자의 응용 프로그램 성능은 물론 사용자에 따라 다릅니다. 내 좋은 친구로서 한 번 말했다 : 당신은 ASP에서 이런 일을 할 수있는 클라이언트 브라우저에서 캐시 설정에 대한

... "당신이 배고픈 때까지 먹지 마라"의 예에서

문서는 아래에 언급 :

<%@ OutputCache Duration='120' Location='Client' VaryByParam='none' %> 

은 '이 120 초 동안 캐시를 절약 할 수와 캐시 된 데이터가 서버에 저장되어서는 안된다, 그것은 단지 클라이언트 브라우저에 저장해야합니다.' 탐험 캐시 in this articlethis one

더.

+0

물론 데이터베이스의 파일을 사용할 때는 캐싱에 신중해야합니다. 내 아이디어는 짧은 캐싱 기간을 갖는 것입니다. 20 분 정도되는 것. 그것은 프로젝트마다 다를 것입니다. 캐싱과 관련해서는 다음을 사용할 수 없습니다 : [OutputCache (Duration = 600, Location = OutputCacheLocation.Client, VaryByParam = "key"]) OutputCacheLocation.Client가 사용자의 브라우저 캐시에 캐시 된 파일을 저장하지 않습니까? 캐시 된 파일을 서버 폴더에 저장 하시겠습니까? –

+0

@Shapper는 답안에서 편집 한 내용을 말합니다. – faizanjehangir