diff --git a/explore/src/app/app.module.ts b/explore/src/app/app.module.ts index 81d561fc..1704868f 100755 --- a/explore/src/app/app.module.ts +++ b/explore/src/app/app.module.ts @@ -39,11 +39,11 @@ import {AlertModalModule} from './openaireLibrary/utils/modal/alertModal.module' exports: [AppComponent], providers: [ {provide: APP_ID, useValue: 'explore'}, - { - provide: HTTP_INTERCEPTORS, - useClass: CacheInterceptorService, - multi: true - }, + // { + // provide: HTTP_INTERCEPTORS, + // useClass: CacheInterceptorService, + // multi: true + // }, { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, diff --git a/explore/src/app/contact/contact.component.ts b/explore/src/app/contact/contact.component.ts index 410d9a18..d421ce75 100644 --- a/explore/src/app/contact/contact.component.ts +++ b/explore/src/app/contact/contact.component.ts @@ -67,7 +67,7 @@ export class ContactComponent implements OnInit { this.updateTitle(this.pageTitle); this.updateDescription(this.description); this.reset(); - this.getPageContents(); + // this.getPageContents(); this.sending = false; } diff --git a/explore/src/app/funders/funders.component.ts b/explore/src/app/funders/funders.component.ts index 800b8ced..f1de1989 100644 --- a/explore/src/app/funders/funders.component.ts +++ b/explore/src/app/funders/funders.component.ts @@ -17,6 +17,7 @@ import {NumberUtils} from '../openaireLibrary/utils/number-utils.class'; import {LayoutService} from '../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service'; import {FormBuilder, FormControl} from '@angular/forms'; import {debounceTime, distinctUntilChanged} from 'rxjs/operators'; +import {GroupedRequestsService} from "../openaireLibrary/services/groupedRequests.service"; @Component({ selector: 'funders', @@ -85,7 +86,8 @@ export class FundersComponent implements OnInit { private stakeholderService: StakeholderService, private layoutService: LayoutService, private cdr: ChangeDetectorRef, - private fb: FormBuilder,) { + private fb: FormBuilder, + private groupedRequestsService: GroupedRequestsService) { } ngOnInit() { @@ -142,100 +144,155 @@ export class FundersComponent implements OnInit { } private getFunders() { - let refineParams = '&fq=resultbestaccessright%20exact%20%22Open%20Access%22'; - this.subscriptions.push( - zip( - this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties), - this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties, refineParams), - this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('funder', 'project', this.properties), - this.stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL, 'funder') - ).subscribe((data: any[]) => { - // storing all needed data to a map - // 1st call - let queriedFunders1 = data[0][1][0].values; - queriedFunders1.forEach(queriedFunder => { - this.fundersMap.set(queriedFunder.id, { - "id": queriedFunder.id, - "name": queriedFunder.name, - "alias": '', - "researchProducts": +queriedFunder.number, - "openAccessResearchProducts": 0, - "openAccessPercentage": 0, - "projects": 0, - "monitorDashboard": '', - "monitorDashboardStatus": '', - "logoUrl": '' - }); - }); + this.subscriptions.push(this.groupedRequestsService.funders().subscribe(data => { + let funders = data["funders"]; + funders.forEach(queriedFunder => { + let id = queriedFunder.id; + let funder = { + "id": id, + "name": this.removePartAfterCharacters(queriedFunder.name, "||"), + "alias": '', + "researchProducts": +queriedFunder.results, + "openAccessResearchProducts": +queriedFunder.openResults, + "openAccessPercentage": 0, + "projects": +queriedFunder.projects, + "monitorDashboard": '', + "monitorDashboardStatus": '', + "logoUrl": '' + }; - // 2nd call - let queriedFunders2 = data[1][1][0].values; - queriedFunders2.forEach(queriedFunder => { - if(this.fundersMap.has(queriedFunder.id)) { - this.fundersMap.get(queriedFunder.id).openAccessResearchProducts = +queriedFunder.number; - } - }); + if((!funder.researchProducts || funder.researchProducts == 0) && (!funder.projects || funder.projects == 0)) { + return; + } - // 3rd call - let queriedFunders3 = data[2][1][0].values; - queriedFunders3.forEach(queriedFunder => { - if(+queriedFunder.number > 1) { - if (this.fundersMap.has(queriedFunder.id)) { - this.fundersMap.get(queriedFunder.id).projects = +queriedFunder.number; - } else { - this.fundersMap.set(queriedFunder.id, { - "id": queriedFunder.id, - "name": queriedFunder.name, - "alias": '', - "researchProducts": 0, - "openAccessResearchProducts": 0, - "openAccessPercentage": 0, - "projects": +queriedFunder.number, - "monitorDashboard": '', - "monitorDashboardStatus": '', - "logoUrl": '' - }); - } - } - }); + if(queriedFunder.stakeholder) { + let stakeholder = queriedFunder.stakeholder; + funder.alias = stakeholder.alias; + funder.monitorDashboard = stakeholder.alias; + funder.monitorDashboardStatus = stakeholder.visibility; + funder.logoUrl = (stakeholder.isUpload ? properties.utilsService + "/download/" : "")+ (stakeholder.logoUrl); + } - // 4th call - let queriedFunders4 = data[3]; - queriedFunders4.forEach(queriedFunder => { - let id = queriedFunder.index_id + '||' + queriedFunder.index_name + '||' + queriedFunder.index_shortName; - if(this.fundersMap.has(id) && ( - !this.fundersMap.get(id).monitorDashboardStatus - || - (this.fundersMap.get(id).monitorDashboardStatus == "RESTRICTED" && queriedFunder.visibility == "PUBLIC") - || - (this.fundersMap.get(id).monitorDashboardStatus == "PRIVATE" && (queriedFunder.visibility == "RESTRICTED" || queriedFunder.visibility == "PUBLIC")))) { - this.fundersMap.get(id).alias = queriedFunder.alias; - this.fundersMap.get(id).monitorDashboard = queriedFunder.alias; - this.fundersMap.get(id).monitorDashboardStatus = queriedFunder.visibility; - this.fundersMap.get(id).logoUrl = (queriedFunder.isUpload ? properties.utilsService + "/download/" : "")+ (queriedFunder.logoUrl); - } - }); - this.fundersMap.forEach((value) => { - if(value.openAccessResearchProducts > 0) { - value.openAccessPercentage = Math.round((value.openAccessResearchProducts / value.researchProducts) * 100); - } - if(!value.logoUrl && this.staticLogos.has(value.id)) { - let split = value.id.split("||"); - let shortname = (split && split.length==3) ? value.id.split("||")[2] : value.id; - value.logoUrl = "assets/explore-assets/funders/logos/"+shortname+".png"; - } - }); - // convert funders map into an array - this.funders = Array.from(this.fundersMap.values()); - // calculate total numbers for intro content - this.calculateNumbers(); - // sort funders - this.funders.sort((a, b) => a['name'].localeCompare(b['name'])); - // initialize displayedFunders - this.displayedFunders = this.funders; - this.showLoading = false; - }) - ); + if(funder.openAccessResearchProducts && funder.researchProducts) { + funder.openAccessPercentage = Math.round((funder.openAccessResearchProducts / funder.researchProducts) * 100); + } + + if(!funder.logoUrl && this.staticLogos.has(funder.id)) { + let split = funder.id.split("||"); + let shortname = (split && split.length==3) ? funder.id.split("||")[2] : funder.id; + funder.logoUrl = "assets/explore-assets/funders/logos/"+shortname+".png"; + } + + this.fundersMap.set(queriedFunder.id, funder); + }); + // convert funders map into an array + this.funders = Array.from(this.fundersMap.values()); + // calculate total numbers for intro content + this.fundersNumber = data.count; + this.researchProductsNumber = data.results; + this.projectsNumber = data.projects; + // sort funders + this.funders.sort((a, b) => a['name'].localeCompare(b['name'])); + // initialize displayedFunders + this.displayedFunders = this.funders; + this.showLoading = false; + })) + + // let refineParams = '&fq=resultbestaccessright%20exact%20%22Open%20Access%22'; + // this.subscriptions.push( + // zip( + // this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties), + // this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties, refineParams), + // this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('funder', 'project', this.properties), + // this.stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL, 'funder') + // ).subscribe((data: any[]) => { + // // storing all needed data to a map + // // 1st call + // let queriedFunders1 = data[0][1][0].values; + // queriedFunders1.forEach(queriedFunder => { + // this.fundersMap.set(queriedFunder.id, { + // "id": queriedFunder.id, + // "name": queriedFunder.name, + // "alias": '', + // "researchProducts": +queriedFunder.number, + // "openAccessResearchProducts": 0, + // "openAccessPercentage": 0, + // "projects": 0, + // "monitorDashboard": '', + // "monitorDashboardStatus": '', + // "logoUrl": '' + // }); + // }); + // + // // 2nd call + // let queriedFunders2 = data[1][1][0].values; + // queriedFunders2.forEach(queriedFunder => { + // if(this.fundersMap.has(queriedFunder.id)) { + // this.fundersMap.get(queriedFunder.id).openAccessResearchProducts = +queriedFunder.number; + // } + // }); + // + // // 3rd call + // let queriedFunders3 = data[2][1][0].values; + // queriedFunders3.forEach(queriedFunder => { + // if(+queriedFunder.number > 1) { + // if (this.fundersMap.has(queriedFunder.id)) { + // this.fundersMap.get(queriedFunder.id).projects = +queriedFunder.number; + // } else { + // this.fundersMap.set(queriedFunder.id, { + // "id": queriedFunder.id, + // "name": queriedFunder.name, + // "alias": '', + // "researchProducts": 0, + // "openAccessResearchProducts": 0, + // "openAccessPercentage": 0, + // "projects": +queriedFunder.number, + // "monitorDashboard": '', + // "monitorDashboardStatus": '', + // "logoUrl": '' + // }); + // } + // } + // }); + // + // // 4th call + // let queriedFunders4 = data[3]; + // queriedFunders4.forEach(queriedFunder => { + // let id = queriedFunder.index_id + '||' + queriedFunder.index_name + '||' + queriedFunder.index_shortName; + // if(this.fundersMap.has(id) && ( + // !this.fundersMap.get(id).monitorDashboardStatus + // || + // (this.fundersMap.get(id).monitorDashboardStatus == "RESTRICTED" && queriedFunder.visibility == "PUBLIC") + // || + // (this.fundersMap.get(id).monitorDashboardStatus == "PRIVATE" && (queriedFunder.visibility == "RESTRICTED" || queriedFunder.visibility == "PUBLIC")))) { + // this.fundersMap.get(id).alias = queriedFunder.alias; + // this.fundersMap.get(id).monitorDashboard = queriedFunder.alias; + // this.fundersMap.get(id).monitorDashboardStatus = queriedFunder.visibility; + // this.fundersMap.get(id).logoUrl = (queriedFunder.isUpload ? properties.utilsService + "/download/" : "")+ (queriedFunder.logoUrl); + // } + // }); + // this.fundersMap.forEach((value) => { + // if(value.openAccessResearchProducts > 0) { + // value.openAccessPercentage = Math.round((value.openAccessResearchProducts / value.researchProducts) * 100); + // } + // if(!value.logoUrl && this.staticLogos.has(value.id)) { + // let split = value.id.split("||"); + // let shortname = (split && split.length==3) ? value.id.split("||")[2] : value.id; + // value.logoUrl = "assets/explore-assets/funders/logos/"+shortname+".png"; + // } + // }); + // // convert funders map into an array + // this.funders = Array.from(this.fundersMap.values()); + // // calculate total numbers for intro content + // this.calculateNumbers(); + // // sort funders + // this.funders.sort((a, b) => a['name'].localeCompare(b['name'])); + // // initialize displayedFunders + // this.displayedFunders = this.funders; + // console.log(this.funders); + // this.showLoading = false; + // }) + // ); } private calculateSum(array, property) { @@ -305,4 +362,12 @@ export class FundersComponent implements OnInit { this.currentPage = $event.value; HelperFunctions.scrollToId('target'); } + + private removePartAfterCharacters(field, characters):string { + if(field && field.indexOf(characters) !=-1){ + return field.split(characters)[0]; + + } + return field; + } } diff --git a/explore/src/app/funders/funders.module.ts b/explore/src/app/funders/funders.module.ts index c89e2d64..e95a5a5f 100644 --- a/explore/src/app/funders/funders.module.ts +++ b/explore/src/app/funders/funders.module.ts @@ -20,6 +20,7 @@ import {closed_access} from '../openaireLibrary/utils/icons/icons'; import {InputModule} from '../openaireLibrary/sharedComponents/input/input.module'; import {PagingModule} from '../openaireLibrary/utils/paging.module'; import {SearchInputModule} from '../openaireLibrary/sharedComponents/search-input/search-input.module'; +import {GroupedRequestsServiceModule} from "../openaireLibrary/services/groupedRequestsService.module"; @NgModule({ @@ -27,7 +28,7 @@ import {SearchInputModule} from '../openaireLibrary/sharedComponents/search-inpu FundersRoutingModule, CommonModule, RouterModule, AlertModalModule, Schema2jsonldModule, SEOServiceModule, BreadcrumbsModule, LoadingModule, RefineFieldResultsServiceModule, LogoUrlPipeModule, IconsModule, InputModule, - PagingModule, SearchInputModule + PagingModule, SearchInputModule, GroupedRequestsServiceModule ], declarations: [ FundersComponent diff --git a/explore/src/app/home/home.component.html b/explore/src/app/home/home.component.html index 1f41806a..8c8655fd 100644 --- a/explore/src/app/home/home.component.html +++ b/explore/src/app/home/home.component.html @@ -47,7 +47,7 @@ - SDGs logo + SDGs logo Sustainable Development Goals (SDGs) @@ -55,7 +55,7 @@ - FOS logo + FOS logo Fields of Science (FoS) @@ -64,8 +64,8 @@
- - + researchers + search
@@ -156,16 +156,16 @@ alt="ipad" loading="lazy"> - ipad + Deposit search - ipad + Deposit in OpenAIRE or Zenodo - ipad + Search links - ipad + link @@ -238,7 +238,7 @@
ipad + src="assets/common-assets/common/graph-nodes.svg" alt="Graph nodes" loading="lazy"> diff --git a/services/cache/mecache/beta-properties.file b/services/cache/mecache/beta-properties.file index d39459e8..d34c784c 100644 --- a/services/cache/mecache/beta-properties.file +++ b/services/cache/mecache/beta-properties.file @@ -1,2 +1,4 @@ port = 4000 utilsService = https://beta.explore.openaire.eu/utils-service +environment = beta +preloadRequests =https://beta.services.openaire.eu/openaire/info/,https://beta.services.openaire.eu/openaire/contexts/,https://beta.services.openaire.eu/usagestats/allmetrics,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:provenanceActions.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:subject_classification_typologies.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:relation_relClass.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:publication_resource.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:dataCite_resource.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:languages.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:access_modes.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:datasource_typologies.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:datasourceCompatibilityLevel.json,https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:countries.json diff --git a/services/cache/mecache/cache.js b/services/cache/mecache/cache.js index 435763a8..0c209f20 100644 --- a/services/cache/mecache/cache.js +++ b/services/cache/mecache/cache.js @@ -2,23 +2,19 @@ const axios = require('axios'); let express = require('express'); let app = express(); -let mcache = require('memory-cache'); +const { LRUCache } = require('lru-cache'); const request = require('superagent'); const prom = require('prom-client'); const URL = require('url'); -var PropertiesReader = require('properties-reader'); -var properties = PropertiesReader('./properties.file'); -const expireShort = 60 * 60 * 1000 // 1 hour //2 * 60 * 1000; //2mins -const expireLong = 24 * 60 * 60 * 1000; //24 hours -const cacheMaxSize = 500; -const longCachingRequests = ["/communityFull", "/full", "/pagehelpcontent", - "/provision/mvc/vocabularies/", "/pages?page_route=", - "/allmetrics", "/countryusagestats/", "/openaire/info", - "/api/communities/", "/openaire/contexts/", - "/utils-service/explore/home", "/utils-service/explore/search", "/utils-service/explore/funders"]; +const PropertiesReader = require('properties-reader'); +const properties = PropertiesReader('./properties.file'); +const environment = properties.get("environment"); +const preloadRequests = properties.get("preloadRequests").split(',');; + +const cacheMaxSize = 300; let cors = require('cors'); app.use(cors()); - +const lruCache = new LRUCache({ max: cacheMaxSize }); const register = new prom.Registry(); prom.collectDefaultMetrics({register: register}); @@ -46,39 +42,40 @@ const histogram = new prom.Histogram({ let cache = () => { return (req, res, next) => { if (req.query.url) { - if (mcache.memsize() > cacheMaxSize) { - console.log("Max cache size reached!" + cacheMaxSize); - clearCache(); - } let key = '__express__' + req.query.url; - let longCache = checkForLongCachedRequests(req.query.url); - let cachedBody = mcache.get(key); const url = new URL.parse(req.query.url); const target = url.host + '/' + url.pathname.split('/')[1]; const scheme = url.protocol.replace(':', ''); - if (cachedBody) { + if (lruCache.has(key)) { +// console.log( key, "hit") const end = histogram.startTimer({scheme: scheme, target: target, cache: 'hit'}); - res.send(JSON.parse(cachedBody)); + res.send(JSON.parse(lruCache.get(key))); responses.inc({scheme: scheme, target: target, code: res.statusCode}); end(); } else { - const end = histogram.startTimer({scheme: scheme, target: target, cache: 'miss'}); - res.sendResponse = res.send; - res.send = (body) => { - let alreadyCached = !!mcache.get(key); - entries.set(mcache.memsize()); - if (!alreadyCached) { - responses.inc({scheme: scheme, target: target, code: res.statusCode}); - end(); - } - if (res.statusCode === 200) { - // console.log("Expire in " +(longCache?expireLong:expireShort) + " " +req.query.url); - mcache.put(key, body, longCache ? expireLong : expireShort, () => { - entries.set(mcache.memsize()); - }); - } - res.sendResponse(body); - }; + // console.log( key, "miss") + const end = histogram.startTimer({scheme: scheme, target: target, cache: 'miss'}); + res.sendResponse = res.send; + res.send = (body) => { + if(isAllowedToBeCached(scheme, target)) { + let alreadyCached = lruCache.has(key); + entries.set(lruCache.size); + if (!alreadyCached) { + responses.inc({scheme: scheme, target: target, code: res.statusCode}); + end(); + } + if (res.statusCode === 200) { + lruCache.set(key, body); + entries.set(lruCache.size); + } + res.sendResponse(body); + }else{ + res.statusCode = 405; + res.sendResponse(JSON.stringify( {code: 405, message: "Method not Allowed"})); + } + + }; + next(); } } else { @@ -86,19 +83,26 @@ let cache = () => { } }; }; - +function isAllowedToBeCached(scheme, target){ + if(environment != "development"){ + return scheme.indexOf("https://")!=-1 && ( target.indexOf(".openaire.eu/") !=-1 || target.indexOf(".zenodo.org/api/") !=-1 || target.indexOf("lab.idiap.ch/enermaps" != -1)) + } else if(environment == "development"){ + return target.indexOf(".openaire.eu/") !=-1 || target.indexOf(".di.uoa.gr") !=-1 || target.indexOf("dev-openaire.d4science.org") !=-1 || target.indexOf("lab.idiap.ch/enermaps") != -1 + } + return true; +} app.get('/clear', (req, res) => { - let c = mcache.size(); + let c = lruCache.size; const url = req.query.url; let message = ""; if (url) { let key = '__express__' + req.query.url; - mcache.del(key); + lruCache.delete(key); message = "Delete entry with key " + url; - entries.set(mcache.size()); + entries.set(lruCache.size); } else { clearCache(); - message = "Delete " + c + " entries. Now there are: " + mcache.size() + message = "Delete " + c + " entries. Now there are: " + lruCache.size } res.header("Access-Control-Allow-Headers", "Origin, Content-Type, Content-Length"); res.header("Access-Control-Allow-Methods", "GET, OPTIONS"); @@ -119,7 +123,6 @@ app.get('/get', cache(), cors(), (req, res) => { res.status(404).send(getResponse(404, "Not Found ")) //not found } else { request.get(url, function (err, response) { - // res.header("Access-Control-Allow-Origin", "http://localhost:3000"); res.header("Access-Control-Allow-Headers", "Origin, Content-Type, Content-Length"); res.header("Access-Control-Allow-Methods", "GET, OPTIONS"); res.header("Access-Control-Allow-Methods", "GET, OPTIONS"); @@ -155,31 +158,29 @@ function getResponse(code, message) { function clearCache() { console.log("cache is cleared!"); - mcache.clear(); - entries.set(mcache.size()); + lruCache.clear(); + entries.set(lruCache.size); initCache(); } async function initCache() { try { - const requests = await axios.get(properties.get('utilsService') + '/grouped-requests'); - const additionalDataPromises = requests.data.map((url) => axios.get('http://localhost:'+properties.get('port') + '/get?url=' + properties.get('utilsService') + url)); - const additionalDataResponses = await Promise.all(additionalDataPromises); - console.log("Cache initialized!") + const requests = await axios.get(properties.get('utilsService') + '/grouped-requests'); + const additionalDataPromises = requests.data.map((url) => axios.get('http://localhost:'+properties.get('port') + '/get?url=' + properties.get('utilsService') + url)); + const additionalDataResponses = await Promise.all(additionalDataPromises); + console.log("Cache initialized group queries!") } catch (error) { - console.error('Error fetching data: Cache initialize failed', error.message); + console.error('Error fetching data: Cache initialize failed', error); + } + try{ + const additionalDataPromisesPreloadRequests = preloadRequests.map((url) => axios.get('http://localhost:'+properties.get('port') + '/get?url=' + url)); + const additionalDataResponsesPreloadRequests = await Promise.all(additionalDataPromisesPreloadRequests); + console.log("Cache initialized preload requests!") + } catch (error) { + console.error('Error fetching data: Cache initialize failed', error); } } -function checkForLongCachedRequests(url) { - let long = false; - longCachingRequests.forEach(partUrl => { - if (url.indexOf(partUrl) !== -1) { - long = true; - } - }); - return long; -} function resetAtMidnight() { console.log("Run Reset timer"); diff --git a/services/cache/mecache/package.json b/services/cache/mecache/package.json index 1118af1a..c5b9a32e 100644 --- a/services/cache/mecache/package.json +++ b/services/cache/mecache/package.json @@ -13,7 +13,7 @@ "axios": "^1.6.7", "cors": "^2.8.5", "express": "^4.18.2", - "memory-cache": "^0.2.0", + "lru-cache": "^10.2.0", "prom-client": "^11.3.0", "properties-reader": "^2.2.0", "superagent": "^5.0.5" diff --git a/services/cache/mecache/production-properties.file b/services/cache/mecache/production-properties.file index 40248189..7ff8eb33 100644 --- a/services/cache/mecache/production-properties.file +++ b/services/cache/mecache/production-properties.file @@ -1,2 +1,5 @@ port = 4000 utilsService = https://explore.openaire.eu/utils-service +environment = production +preloadRequests =https://services.openaire.eu/openaire/info/,https://services.openaire.eu/openaire/contexts/,https://services.openaire.eu/usagestats/allmetrics,https://services.openaire.eu/provision/mvc/vocabularies/dnet:provenanceActions.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:subject_classification_typologies.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:relation_relClass.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:publication_resource.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:dataCite_resource.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:languages.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:access_modes.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:datasource_typologies.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:datasourceCompatibilityLevel.json,https://services.openaire.eu/provision/mvc/vocabularies/dnet:countries.json + diff --git a/services/cache/mecache/properties.file b/services/cache/mecache/properties.file index 6734892a..2ff599db 100644 --- a/services/cache/mecache/properties.file +++ b/services/cache/mecache/properties.file @@ -1,2 +1,4 @@ port = 3200 utilsService= http://scoobydoo.di.uoa.gr:8000 +environment = development +preloadRequests =https://dev-openaire.d4science.org/openaire/info/,https://dev-openaire.d4science.org/openaire/contexts/,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:provenanceActions.json,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:subject_classification_typologies.json,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:publication_resource.json,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:dataCite_resource.json,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:languages.json,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:access_modes.json,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:datasource_typologies.json,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:datasourceCompatibilityLevel.json,https://dev-openaire.d4science.org/provision/mvc/vocabularies/dnet:countries.json