ASP.NET核心缓存外部Web调用X时间

时间:2018-04-04 08:17:55

标签: c# asp.net asp.net-web-api asp.net-core asp.net-web-api2

我有一个WEB API方法,在一个动作方法中,我构建了一个模型,其中一个字段是从外部API构建的。然而,速度优化很重要,我希望在X分钟后将该单个请求缓存到外部API。我试图使用HttpClient和Delegating处理程序来实现它,但欢迎其他任何东西。

1 个答案:

答案 0 :(得分:0)

对我来说,更好的解决方案是将您的WEB Api的结果缓存在内存缓存分布式缓存

这是我为分布式缓存执行的实现

public class TimeService extends Service {
    // constant
    public static final long NOTIFY_INTERVAL = 10 * 1000; // 10 seconds

    // run on another Thread to avoid crash
    private Handler mHandler = new Handler();
    // timer handling
    private Timer mTimer = null;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        // cancel if already existed
        if(mTimer != null) {
            mTimer.cancel();
        } else {
            // recreate new
            mTimer = new Timer();
        }
        // schedule task
        mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
    }

    class TimeDisplayTimerTask extends TimerTask {

        @Override
        public void run() {
            // run on another thread
            mHandler.post(new Runnable() {

                @Override
                public void run() {
                    // display toast
                   startService(new Intent(this, MyService.class));
                }

            });
        }

        private String getDateTime() {
            // get date time in custom format
            SimpleDateFormat sdf = new SimpleDateFormat("[yyyy/MM/dd - HH:mm:ss]");
            return sdf.format(new Date());
        }

    }