1

因此,当涉及到图像加载、调整大小和使用 Umbraco 中的 ImageProcessor 时,我的网站性能确实很慢。

目前使用:

  • Umbraco 7.4.3
  • AWSSDK.Core 3.3.11
  • AWSSDK.S3 3.3.5.11
  • 图像处理器 2.5.3
  • ImageProcessor.Web 4.8.3
  • Umbraco.Storage.S3 1.0.23(不再维护?)

CloudFront 也不缓存图像(根据我的理解,自定义源没有被缓存?),所以为了避免站点崩溃,我在 CloudFront 和 Umbraco 服务器之间有一个 NGINX 服务器(在标准 AWS 负载后面)平衡器)。

很难想象 2 x c4.xlarge 实例无法立即处理图像。

我注意到有时会发生的一件事是: 日志片段

我只是放了一对新的 AWS 访问密钥,看看它是否会有所作为,但遗憾的是,仍然很慢。即使是后台也需要很长时间才能在内容选项卡和媒体选项卡中加载图像的预览。

配置方面,我已经对我在互联网上找到的内容进行了三次检查(对于 FileSystemProviders 和 ImageProcessor 配置)。

图像处理器缓存配置:

    <?xml version="1.0" encoding="utf-8" ?>
<!-- For more information on using transformations 
     see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<caching xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" currentCache="AmazonS3Cache" xdt:Transform="Replace">
  <caches>
    <cache name="AmazonS3Cache" type="formula_e.web.cms.Core.ImageProcessor.AmazonS3Cache, formula-e.web.cms" maxDays="365" xdt:Locator="Match(name)" xdt:Transform="Replace">
      <settings>
        <setting key="AwsAccessKey" value="XXXXXXX" />
        <setting key="AwsSecretKey" value="XXXXXXX" />
        <setting key="AwsBucketName" value="XXXXXXX" />
        <setting key="AwsEndpoint" value="http://XXXXXXX.s3.amazonaws.com/" />
        <setting key="AwsBucketFolder" value="cache-live" />
        <setting key="CachedCDNRoot" value="http://XXXXXXX.cloudfront.net" />
        <setting key="StreamCachedImage" value="true" />
      </settings>
    </cache>
  </caches>
</caching>

图像处理器安全配置:

    <?xml version="1.0" encoding="utf-8" ?>
<!-- For more information on using transformations 
     see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<security xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <services xdt:Transform="Replace">
    <service prefix="media/" name="CloudImageService" type="ImageProcessor.Web.Services.CloudImageService, ImageProcessor.Web">
      <settings>
        <setting key="MaxBytes" value="41943040"/>
        <setting key="Timeout" value="30000"/>
        <setting key="Host" value="http://XXXXXXX.s3.amazonaws.com/media/"/>
      </settings>
    </service>
  </services>
</security>

Filesytemproviders 配置:

    <?xml version="1.0" encoding="utf-8" ?>
<!-- For more information on using transformations 
     see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<FileSystemProviders xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <Provider alias="media" type="Umbraco.Storage.S3.BucketFileSystem, Umbraco.Storage.S3" xdt:Locator="Match(alias)" xdt:Transform="Replace">
    <Parameters>
      <!-- S3 Bucket Name -->
      <add key="bucketName" value="XXXXXXX" />
      <!-- S3 Bucket Hostname - Used for storage in umbraco's database (Should be blank when using Virtual File Provider) -->
      <add key="bucketHostName" value="" />
      <!-- S3 Object Key Prefix - What should we prefix keys with? -->
      <add key="bucketKeyPrefix" value="media" />
      <!-- AWS Region Endpoint (us-east-1/us-west-1/ap-southeast-2) Important to get right otherwise all API requests will return a 30x response -->
      <add key="region" value="eu-west-1" />
    </Parameters>
  </Provider>
</FileSystemProviders>

我该如何找出问题所在?

4

1 回答 1

3

对于任何有类似问题的人来说,整个问题都在缓存配置文件中,当同时请求多个图像时,由于图像的缓存在 S3 中而不是本地,导致整个系统的执行速度非常慢。

缓存设置为 currentCache="AmazonS3Cache" 这甚至不是官方的(由 JamesSouth 确认)。

一旦我将 currentCache="DiskCache" 放在生产机器上,一切都会正常运行。

于 2017-05-22T16:27:32.743 回答