代码之家  ›  专栏  ›  技术社区  ›  Martin Miguel Stevens

如何改进跨域页面调用/加载

  •  1
  • Martin Miguel Stevens  · 技术社区  · 11 年前

    注意:我知道这有点多 服务器 程序设计 但StackOverflow是 .htaccess 信息I 发现你们中的一些人 美丽的StackOverflowers会有一些有用的建议。许多的 谢谢

    我在一个LAMP堆栈上,有多个域和一个cPanel后端。

    我有一个域名, www.domainA.com 这最终将是众多域A-E中的一个(不是字面上的A-E,但你可以理解),所有这些域都从另一个域调用某些页面的内容, DomainM.com , 域名M.com 可以通过网络直接访问,但其想法是,这绝对不会是访问者的主要来源。

    关键是有人来访 DomainA.com 并从中查看内容 www.DomainM.com 但网址仍在www.DomainA.com上 .

    我目前已在.htaccess 域名A.com (来自我工作中的服务人员的建议)。我很确定.htaccess重定向不是最好的方法,但它确实有效:

    .htaccess打开 www.DomainA.com :

    RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.org\.uk$ [NC]
    RewriteRule ^(referencepage)/?$ http://www.DomainM.co.uk/$1 [P,NC]
    

    这是地址 www.domainA.org.uk/referencepage 并从中加载服务器数据 www.domainM.co.uk/referencepage 而游客无法看到 域名M.com .

    所以我有两个问题:

    1) 各种测量表明,大约30%的时间,该系统需要2-4秒的时间来加载页面。我 认为 这将是由于处理两个服务器和我 认为 .htaccess不是处理此声明的最有效方法。我们无权访问httpd.conf。

    如何提高此设置的加载速度?

    1b)如何获得关于加载和显示页面最耗时的内容的更详细报告? 解决了的

    2) 是否有一种更有效的方式来设置这种布局,主要目的是显示 DomainM 在…上 DomainA 没有访客“离开” 域名A ?

    P.S>如果有我想做的事情的名字,我可以更新问题标题,它可以用于搜索他人和我自己的参考。干杯

    更新

    我简化了我的 .htaccess 规则有一点,所以现在他们读到:

    #This is to force to use www.
    RewriteCond %{HTTP_HOST} !^$
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]
    
    #Start biz pages
    #for each business in turn: 
    RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.DomainA.org.uk/businessName$ [NC]
    RewriteRule ^(.*) http://www.Domain.co.uk/$1 [P,NC]
    

    因此 www.DomainA.org.uk/business 荷载 www.Domain.co.uk/business (这是在Domain.co.uk上重写为: www.Domain.co.uk/page.php?name=business ).

    更新2

    我在 域名A 站点:

    Options -Indexes
    
    #force www usage.
    RewriteCond %{HTTP_HOST} !^$
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]
    
    #Start business pages
    RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.southwold.org.uk/cranbourne$ [NC]
    RewriteRule ^(.*) http://www.blythweb.co.uk/$1 [P,NC]
    
    ... (all pages references are the same structure as above) ... 
    
    #End business Pages
    
    #prevent error looping
    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule .* - [L]
    
    <Files php.ini>
    order deny,allow
    deny from all
    </Files> 
    
    1 回复  |  直到 11 年前
        1
  •  0
  •   undone    11 年前

    让我解释一下重写引擎是如何工作的。例如 http://domainA.com/referencepage 。当您请求此页面时,浏览器会向web服务器发送请求以检索该页面。web服务器会检查 .htaccess 并读取其重写规则。

    你的重写条件是(我更改了它们以匹配 domainA.com domain.com ):

    RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.com$ [NC]
    

    这意味着以下规则仅适用于 域A.com www.domainA.com .

    RewriteRule ^(referencepage)/?$ http://www.DomainM.com/$1 [P,NC]
    

    这行表示将请求域更改为 www.DomainM.com 如果用户请求主页( http://domainA.com/ )或参考页( http://domainA.com/referencepage ).

    但你的重写规则 P 标志,这意味着重写的URL将通过代理传递。

    如果两者都 DomainM.com 域A.com 在同一服务器上,我建议您删除 P 标志以避免这种情况(这意味着请求将花费更少的时间)。


    关于第一个问题: 如果您想知道加载所需的时间,可以使用 Firebug (firefox)或IE的开发者工具(按 第12页 ).

    IE开发者工具: IE Developer Tools

    FireBug: FireBug

    推荐文章