多租户ASP MVC应用程序的捆绑

赫南

我正在使用ASP MVC开发多租户应用程序。租户由子域标识。我正在使用System.Web.Optimization进行捆绑和缩小以及BundleTransformer.Less。

可以通过为每个租户应用一组特定的LESS变量来设置UI主题。这些变量存储在数据库中。

根据https://stackoverflow.com/users/1292362/andrey-taritsyn的建议,我实现了一个自定义VirtualPathProvider,以将较少的变量注入需要它们的较少文件中。就像魅力一样!

但是,我对如何管理捆绑和缓存有一些疑问。

  1. 我应该抓住每个可能的租户,并在App_Start上为每个租户注册一个捆绑包吗?(我不喜欢此选项,因为我应该注册可能永远不会或偶尔使用的捆绑软件,而且我还应该解决为新租户注册新捆绑软件的问题,而无需重新启动)。

  2. 我应该监视每个请求,检查租户的捆绑包是否存在,如果不存在,请注册它?

  3. 最佳解决方案是仅在App_Start一次声明捆绑包,并在对租户子域的第一个请求进入时创建捆绑包响应并将其存储在缓存中。

我目前已经实现了选项3,它确实可以工作,但是我不知道内部真正发生了什么。

  • 如何自定义缓存密钥以标识捆绑租户?到目前为止,我做到了:

    public class SkinnableBundle : Bundle
    {
        public SkinnableBundle(string virtualPath)
            : this(virtualPath, null)
        { }
    
        public SkinnableBundle(string virtualPath, string cdnPath)
            : base(virtualPath, cdnPath,
                new IBundleTransform[] { BundleTransformerContext.Current.Css.GetTransformerInstance() })
        {
            Builder = new NullBuilder();
        }
    
        public override string GetCacheKey(BundleContext context)
        {
            if (context.HttpContext == null)
            {
                return base.GetCacheKey(context);
            }
    
            var host = context.HttpContext.Request.Url.Host.ToLowerInvariant();
            return string.Format("System.Web.Optimization.Bundle:{0}:{1}", host, context.BundleVirtualPath);
        }
     }
    
    • 捆绑包由相同的虚拟路径标识,但是:是否缓存了很多捆绑包响应(特定于租户)?还是只有一个捆绑包响应被覆盖?

    • 如何在布局中检索特定于租户的捆绑包响应?当我执行@ Styles.Render(“〜/ bundles / css / common”)时会发生什么?是否基于虚拟路径租户标识捆绑响应

赫南

我几乎可以肯定,多个特定于租户的捆绑包响应已存储在缓存中。我安装了Glimpse并检查了缓存:我发现每个租户都为该捆绑包列出了一个条目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多租户ASP MVC应用程序的捆绑

来自分类Dev

多租户ASP.Net MVC应用程序-在何处存储租户特定数据

来自分类Dev

多租户应用程序的MVC路由

来自分类Dev

ASP.NET MVC应用程序中的多租户日志记录

来自分类Dev

ASP.NET MVC多租户应用程序中的控制器(无子域)

来自分类Dev

具有租户特定角色的ASP.NET多租户应用程序

来自分类Dev

使用单数据库多模式的ASP.NET MVC多租户应用程序:从应用程序调用存储过程尝试访问dbo表

来自分类Dev

在多租户应用程序的请求管道外部获取ASP MVC Core中的依赖项注入服务

来自分类Dev

www不能与基于子域的多租户asp.net mvc 5应用程序一起使用

来自分类Dev

设置多租户应用程序

来自分类Dev

多租户应用程序中的IdentityRole

来自分类Dev

多租户应用程序-SSL证书

来自分类Dev

带有ASP.NET Core 3.0和EF Core的多租户应用程序

来自分类Dev

从多租户应用程序查询租户Azure AD

来自分类Dev

多租户MVC应用程序有时会提供错误的租户

来自分类Dev

在 ASP.NET MVC 5 应用程序中,捆绑的 css 未反映原始 css 文件

来自分类Dev

如何使用多租户ASP.NET应用程序通过Azure Active Directory进行身份验证?

来自分类Dev

具有多租户应用程序的Windows Azure缓存

来自分类Dev

在多租户应用程序中使用Rebus

来自分类Dev

在多租户应用程序中创建计划的作业

来自分类Dev

如何创建多租户应用程序的服务主体

来自分类Dev

在多租户应用程序中管理任务队列-GAE

来自分类Dev

使用Azure Active Directory的多租户应用程序

来自分类Dev

多租户应用程序的多级子域

来自分类Dev

Rails:多租户应用程序和动态路由

来自分类Dev

在asp.net MVC Web应用程序中捆绑和缩小ES6 javascript文件

来自分类Dev

租户在多租户应用程序数据模型中指的是什么?

来自分类Dev

将NHibernate繁重的应用程序从具有多个模式的单租户迁移到多租户

来自分类Dev

ASP.NET MVC 5 + EF6 + Ninject-多租户数据库

Related 相关文章

  1. 1

    多租户ASP MVC应用程序的捆绑

  2. 2

    多租户ASP.Net MVC应用程序-在何处存储租户特定数据

  3. 3

    多租户应用程序的MVC路由

  4. 4

    ASP.NET MVC应用程序中的多租户日志记录

  5. 5

    ASP.NET MVC多租户应用程序中的控制器(无子域)

  6. 6

    具有租户特定角色的ASP.NET多租户应用程序

  7. 7

    使用单数据库多模式的ASP.NET MVC多租户应用程序:从应用程序调用存储过程尝试访问dbo表

  8. 8

    在多租户应用程序的请求管道外部获取ASP MVC Core中的依赖项注入服务

  9. 9

    www不能与基于子域的多租户asp.net mvc 5应用程序一起使用

  10. 10

    设置多租户应用程序

  11. 11

    多租户应用程序中的IdentityRole

  12. 12

    多租户应用程序-SSL证书

  13. 13

    带有ASP.NET Core 3.0和EF Core的多租户应用程序

  14. 14

    从多租户应用程序查询租户Azure AD

  15. 15

    多租户MVC应用程序有时会提供错误的租户

  16. 16

    在 ASP.NET MVC 5 应用程序中,捆绑的 css 未反映原始 css 文件

  17. 17

    如何使用多租户ASP.NET应用程序通过Azure Active Directory进行身份验证?

  18. 18

    具有多租户应用程序的Windows Azure缓存

  19. 19

    在多租户应用程序中使用Rebus

  20. 20

    在多租户应用程序中创建计划的作业

  21. 21

    如何创建多租户应用程序的服务主体

  22. 22

    在多租户应用程序中管理任务队列-GAE

  23. 23

    使用Azure Active Directory的多租户应用程序

  24. 24

    多租户应用程序的多级子域

  25. 25

    Rails:多租户应用程序和动态路由

  26. 26

    在asp.net MVC Web应用程序中捆绑和缩小ES6 javascript文件

  27. 27

    租户在多租户应用程序数据模型中指的是什么?

  28. 28

    将NHibernate繁重的应用程序从具有多个模式的单租户迁移到多租户

  29. 29

    ASP.NET MVC 5 + EF6 + Ninject-多租户数据库

热门标签

归档