சேவையக சேமிப்பிடம் இல்லாமல் திறமையான கோப்பு பதிவிறக்கங்கள்
பயனர்கள் ஒரு கோப்பைப் பதிவேற்றவும், செயலாக்கவும், உடனடியாக ஒரு முடிவை வழங்கவும் அனுமதிக்கும் ஒரு வலை பயன்பாட்டை நீங்கள் உருவாக்குகிறீர்கள் என்று கற்பனை செய்து பாருங்கள் - அதை சேவையகத்தில் சேமிக்காமல். ஏபிஐ வழியாக டைனமிக் கோப்பு உருவாக்கத்துடன் பணிபுரியும் டெவலப்பர்கள் எதிர்கொள்ளும் சவால் இதுதான். இதுபோன்ற சந்தர்ப்பங்களில், கோப்பு பதிவிறக்கங்களை கையாளுதல் திறமையாக ஒரு முக்கியமான பணியாக மாறும். .
பாரம்பரிய அணுகுமுறை கோப்பை தற்காலிகமாக சேவையகத்தில் சேமித்து வைப்பது மற்றும் நேரடி பதிவிறக்க இணைப்பை வழங்குவதை உள்ளடக்குகிறது. இருப்பினும், அதிக போக்குவரத்து API களைக் கையாளும் போது, சேவையகத்தில் கோப்புகளைச் சேமிப்பது அளவிடக்கூடியது அல்லது திறமையானது அல்ல. அதற்கு பதிலாக, அஜாக்ஸ் பதிலிலிருந்து நேரடி கோப்பு பதிவிறக்கங்களை அனுமதிக்கும் தீர்வு எங்களுக்கு தேவை. ஆனால் இதை நாம் எவ்வாறு அடைவது?
பல பொதுவான தீர்வுகள் உலாவியின் இருப்பிடத்தை கையாளுதல் அல்லது நங்கூரக் கூறுகளை உருவாக்குவது ஆகியவை அடங்கும், ஆனால் இவை இரண்டாம் நிலை கோரிக்கையின் மூலம் கோப்பை அணுகுவதை நம்பியுள்ளன. எங்கள் ஏபிஐ கோப்புகளை மாறும் வகையில் உருவாக்குகிறது மற்றும் அவற்றை சேமிக்காது என்பதால், இதுபோன்ற பணிகள் இயங்காது. அஜாக்ஸ் பதிலை கிளையன்ட் பக்கத்தில் தரவிறக்கம் செய்யக்கூடிய கோப்பாக மாற்ற வேறு அணுகுமுறை தேவை.
இந்த கட்டுரையில், ஜாவாஸ்கிரிப்டில் நேரடியாக தரவிறக்கம் செய்யக்கூடிய கோப்பாக API பதிலை செயலாக்குவதற்கான வழியை ஆராய்வோம். நீங்கள் எக்ஸ்எம்எல், ஜேஎஸ்ஓஎன் அல்லது பிற கோப்பு வகைகளை கையாளுகிறீர்களானாலும், இந்த முறை கோப்பு விநியோகத்தை திறமையாக ஒழுங்குபடுத்த உதவும். உள்ளே நுழைவோம்! .
கட்டளை | பயன்பாட்டின் எடுத்துக்காட்டு |
---|---|
fetch().then(response =>fetch().then(response => response.blob()) | சேவையகத்திலிருந்து ஒரு கோப்பைப் பெறவும், பதிலை ஒரு குமிழியாக மாற்றவும் பயன்படுகிறது, இது பைனரி தரவைக் குறிக்கிறது. ஜாவாஸ்கிரிப்டில் மாறும் வகையில் உருவாக்கப்பட்ட கோப்புகளை கையாள இது முக்கியமானது. |
window.URL.createObjectURL(blob) | ஒரு குமிழ் பொருளுக்கு தற்காலிக URL ஐ உருவாக்குகிறது, உலாவி தொலை சேவையகத்திலிருந்து பதிவிறக்கம் செய்யப்பட்டதைப் போல கோப்பைக் கையாள அனுமதிக்கிறது. |
res.setHeader('Content-Disposition', 'attachment') | உலாவியை இன்லைனில் காண்பிப்பதற்கு பதிலாக பதிவிறக்கம் செய்ய அறிவுறுத்துகிறது. சேவையகத்தில் கோப்பை சேமிக்காமல் டைனமிக் கோப்பு பதிவிறக்கங்களுக்கு இது அவசியம். |
responseType: 'blob' | ஆக்ஸியோஸ் கோரிக்கைகளில் பயன்படுத்தப்படுகிறது, பதிலை பைனரி தரவுகளாகக் கருத வேண்டும், இது முன்பக்கத்தில் சரியான கோப்பு கையாளுதலை செயல்படுத்துகிறது. |
document.createElement('a') | பயனர் தொடர்பு தேவையில்லாமல் கோப்பு பதிவிறக்கத்தை நிரல் ரீதியாக தூண்டுவதற்கு மறைக்கப்பட்ட நங்கூர உறுப்பை உருவாக்குகிறது. |
window.URL.revokeObjectURL(url) | உருவாக்கப்பட்ட குமிழ் URL க்கு ஒதுக்கப்பட்ட நினைவகத்தை வெளியிடுகிறது, நினைவக கசிவுகளைத் தடுக்கிறது மற்றும் செயல்திறனை மேம்படுத்துகிறது. |
app.post('/generate-file', (req, res) =>app.post('/generate-file', (req, res) => {...}) | கிளையன்ட் கோரிக்கைகளுக்கு பதிலளிக்கும் விதமாக கோப்புகளை உருவாக்கி அனுப்புவதற்கு Express.js இல் சேவையக பக்க இறுதிப்புள்ளியை வரையறுக்கிறது. |
new Blob([response.data]) | மூல பைனரி தரவிலிருந்து ஒரு குமிழ் பொருளை உருவாக்குகிறது, இது ஒரு API இலிருந்து கோப்பு பதில்களைக் கையாளும் போது அவசியம். |
link.setAttribute('download', 'file.xml') | பதிவிறக்கம் செய்யப்பட்ட கோப்பிற்கான இயல்புநிலை கோப்பு பெயரைக் குறிப்பிடுகிறது, தடையற்ற பயனர் அனுபவத்தை உறுதி செய்கிறது. |
expect(response.headers['content-disposition']).toContain('attachment') | கோப்பு பதிவிறக்கங்களுக்கான பதில் தலைப்புகளை API சரியாக அமைக்கிறது என்பதை சரிபார்க்க ஒரு நகைச்சுவை சோதனை கூற்று. |
மாஸ்டரிங் டைனமிக் கோப்பு அஜாக்ஸ் வழியாக பதிவிறக்குகிறது
கோப்புகளை மாறும் வகையில் உருவாக்கும் வலை பயன்பாடுகளைக் கையாளும் போது, பதிவிறக்கங்களை திறம்பட கையாள்வது ஒரு சவாலாக மாறும். உருவாக்கப்பட்ட கோப்புகளை சேவையகத்தில் சேமிக்காமல் அவற்றை மீட்டெடுக்க பயனர்களை அனுமதிப்பதே குறிக்கோள், உகந்த செயல்திறனை உறுதி செய்கிறது. நாங்கள் பயன்படுத்திய அணுகுமுறையில், ஒரு எக்ஸ்எம்எல் கோப்பை பறக்கும்போது உருவாக்கும் ஏபிஐக்கு அஜாக்ஸ் கோரிக்கையை அனுப்புவது அடங்கும். சேவையகத்தை சுத்தமாக வைத்திருக்கும்போது இரண்டாம் நிலை கோரிக்கைகளின் தேவையை இது நீக்குகிறது. ஒரு முக்கிய அம்சம் பயன்பாடு உள்ளடக்க-எதிர்ப்பு தலைப்பு, இது உலாவியை தரவிறக்கம் செய்யக்கூடிய கோப்பாக கருதுகிறது. பைனரி தரவைக் கையாளும் ஜாவாஸ்கிரிப்டின் திறனை மேம்படுத்துவதன் மூலம், பயனர்களுக்கு ஊடாடும் மற்றும் தடையற்ற அனுபவத்தை உருவாக்கலாம். .
ஃபிரான்டென்ட் ஸ்கிரிப்டில், நாங்கள் பயன்படுத்துகிறோம் () பெறுங்கள் () API சேவையகத்திற்கு ஒத்திசைவற்ற கோரிக்கையை அனுப்ப. பதில் பின்னர் a ஆக மாற்றப்படுகிறது குமிழ் பொருள், பைனரி தரவை சரியாக கையாள ஜாவாஸ்கிரிப்டை அனுமதிக்கும் ஒரு முக்கியமான படி. கோப்பு கிடைத்ததும், ஒரு தற்காலிக URL ஐப் பயன்படுத்தி உருவாக்கப்படுகிறது window.url.createobjecturl (குமிழ்), இது உலாவியை ஒரு சாதாரண பதிவிறக்க இணைப்பு போல அடையாளம் காணவும் செயலாக்கவும் அனுமதிக்கிறது. பதிவிறக்கத்தைத் தூண்டுவதற்கு, நாங்கள் ஒரு மறைக்கப்பட்ட நங்கூரத்தை உருவாக்குகிறோம் () உறுப்பு, அதற்கு URL ஐ ஒதுக்கி, ஒரு கோப்பு பெயரை அமைத்து, ஒரு கிளிக் நிகழ்வை உருவகப்படுத்துங்கள். இந்த நுட்பம் தேவையற்ற பக்க மறுஏற்றம் தவிர்த்து, கோப்பு சீராக பதிவிறக்கம் செய்யப்படுவதை உறுதி செய்கிறது.
பின்தளத்தில், எங்கள் express.js சேவையகம் கோரிக்கையை கையாளவும், பறக்கும்போது ஒரு எக்ஸ்எம்எல் கோப்பை உருவாக்கவும் வடிவமைக்கப்பட்டுள்ளது. இந்த செயல்பாட்டில் மறுமொழி தலைப்புகள் முக்கிய பங்கு வகிக்கின்றன. தி res.setheader ('உள்ளடக்க-எதிர்ப்பு', 'இணைப்பு') உலாவியை இன்லைன் காண்பிப்பதை விட பதிவிறக்கம் செய்ய உத்தரவு சொல்கிறது. கூடுதலாக, தி res.setheader ('உள்ளடக்க-வகை', 'பயன்பாடு/எக்ஸ்எம்எல்') கோப்பு சரியாக விளக்கப்படுவதை உறுதி செய்கிறது. எக்ஸ்எம்எல் உள்ளடக்கம் மாறும் வகையில் உருவாக்கப்பட்டு நேரடியாக மறுமொழி அமைப்பாக அனுப்பப்படுகிறது, இதனால் செயல்முறையை மிகவும் திறமையாக ஆக்குகிறது. பெரிய அளவிலான தரவைக் கையாளும் பயன்பாடுகளுக்கு இந்த அணுகுமுறை மிகவும் பயனுள்ளதாக இருக்கும், ஏனெனில் இது வட்டு சேமிப்பகத்தின் தேவையை நீக்குகிறது.
எங்கள் செயலாக்கத்தை சரிபார்க்க, யூனிட் சோதனைக்கு நாங்கள் நகைச்சுவையைப் பயன்படுத்துகிறோம். ஒரு முக்கியமான சோதனை ஏபிஐ சரியாக அமைக்கிறது என்பதை சரிபார்க்கிறது உள்ளடக்க-எதிர்ப்பு தலைப்பு, பதில் தரவிறக்கம் செய்யக்கூடிய கோப்பாக கையாளப்படுவதை உறுதிசெய்கிறது. மற்றொரு சோதனை உருவாக்கப்பட்ட எக்ஸ்எம்எல் கோப்பின் கட்டமைப்பை சரிபார்க்கிறது. பயன்பாட்டின் நம்பகத்தன்மை மற்றும் அளவிடுதலைப் பராமரிக்க இந்த வகை சோதனை முக்கியமானது. நீங்கள் ஒரு அறிக்கை ஜெனரேட்டர், தரவு ஏற்றுமதி அம்சம் அல்லது மாறும் கோப்புகளை வழங்க வேண்டிய வேறு எந்த அமைப்பையும் உருவாக்கினாலும், இந்த அணுகுமுறை சுத்தமான, பாதுகாப்பான மற்றும் திறமையான தீர்வை வழங்குகிறது. .
ஜாவாஸ்கிரிப்ட் மற்றும் அஜாக்ஸுடன் கோப்புகளை மாறும் மற்றும் பதிவிறக்குதல்
ஜாவாஸ்கிரிப்ட் (ஃபிரான்டென்ட்) மற்றும் எக்ஸ்பிரஸ்.ஜேஎஸ் (பின்தளத்தில்) ஆகியவற்றைப் பயன்படுத்தி செயல்படுத்தல்
// Frontend: Making an AJAX request and handling file download
function downloadFile() {
fetch('/generate-file', {
method: 'POST',
})
.then(response => response.blob())
.then(blob => {
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'file.xml';
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
})
.catch(error => console.error('Download failed:', error));
}
பறக்கும்போது எக்ஸ்எம்எல் கோப்பை உருவாக்க சேவையக பக்க ஏபிஐ
கோரிக்கைகளை கையாள Express.js மற்றும் node.js ஐப் பயன்படுத்துதல்
const express = require('express');
const app = express();
app.use(express.json());
app.post('/generate-file', (req, res) => {
const xmlContent = '<?xml version="1.0"?><data><message>Hello, world!</message></data>';
res.setHeader('Content-Disposition', 'attachment; filename="file.xml"');
res.setHeader('Content-Type', 'application/xml');
res.send(xmlContent);
});
app.listen(3000, () => console.log('Server running on port 3000'));
ஆக்சியோஸ் மற்றும் வாக்குறுதிகளைப் பயன்படுத்தி மாற்று அணுகுமுறை
கோப்பைப் பெறுவதற்கும் பதிவிறக்குவதற்கும் ஆக்சியோஸைப் பயன்படுத்துதல்
function downloadWithAxios() {
axios({
url: '/generate-file',
method: 'POST',
responseType: 'blob'
})
.then(response => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.xml');
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
.catch(error => console.error('Error downloading:', error));
}
கோப்பு உருவாக்கம் API க்கான அலகு சோதனை
பின்தளத்தில் சோதனைக்கு நகைச்சுவையைப் பயன்படுத்துதல்
const request = require('supertest');
const app = require('../server'); // Assuming server.js contains the Express app
test('Should return an XML file with the correct headers', async () => {
const response = await request(app).post('/generate-file');
expect(response.status).toBe(200);
expect(response.headers['content-type']).toBe('application/xml');
expect(response.headers['content-disposition']).toContain('attachment');
expect(response.text).toContain('<data>');
});
டைனமிக் கோப்பு பதிவிறக்கங்களில் பாதுகாப்பு மற்றும் செயல்திறனை மேம்படுத்துதல்
மாறும் வகையில் உருவாக்கப்பட்ட கோப்பு பதிவிறக்கங்களைக் கையாளும் போது, பாதுகாப்பு மற்றும் செயல்திறன் ஆகியவை டெவலப்பர்கள் கவனிக்க வேண்டிய இரண்டு முக்கியமான அம்சங்களாகும். கோப்புகள் பறக்கும்போது உருவாக்கப்பட்டு சேவையகத்தில் சேமிக்கப்படாததால், அங்கீகரிக்கப்படாத அணுகலைத் தடுப்பது மற்றும் திறமையான விநியோகத்தை உறுதி செய்வது அவசியம். ஒரு முக்கிய பாதுகாப்பு நடவடிக்கை சரியானதை செயல்படுத்துகிறது அங்கீகாரம் மற்றும் அங்கீகாரம் வழிமுறைகள். முறையான பயனர்கள் மட்டுமே API ஐ அணுகி கோப்புகளைப் பதிவிறக்க முடியும் என்பதை இது உறுதி செய்கிறது. எடுத்துக்காட்டாக, JSON வலை டோக்கன்கள் (JWT) அல்லது OAUTH அங்கீகாரத்தை ஒருங்கிணைப்பது அங்கீகரிக்கப்படாத பயனர்களை கோப்புகளை உருவாக்குவதிலிருந்து கட்டுப்படுத்தலாம். கூடுதலாக, விகிதத்தைக் கட்டுப்படுத்துவது ஒரு பயனரின் கோரிக்கைகளின் எண்ணிக்கையைக் கட்டுப்படுத்துவதன் மூலம் துஷ்பிரயோகத்தைத் தடுக்கிறது.
பெரிய கோப்புகளுக்கான மறுமொழி கையாளுதலை மேம்படுத்துவதே மற்றொரு முக்கியமான கருத்தாகும். சிறிய எக்ஸ்எம்எல் கோப்புகள் ஒரு சிக்கலை ஏற்படுத்தாது என்றாலும், பெரிய கோப்புகளுக்கு நினைவக சுமை தவிர்க்க திறமையான ஸ்ட்ரீமிங் தேவைப்படுகிறது. முழு கோப்பையும் ஒரே நேரத்தில் அனுப்புவதற்கு பதிலாக, சேவையகம் பயன்படுத்தலாம் Node.js நீரோடைகள் துகள்களில் தரவை செயலாக்க மற்றும் அனுப்ப. இந்த முறை நினைவக நுகர்வு குறைக்கிறது மற்றும் விநியோகத்தை விரைவுபடுத்துகிறது. ஃபிரான்டெண்டில், பயன்படுத்தி ReadableStream பெரிய பதிவிறக்கங்களை சீராக கையாள அனுமதிக்கிறது, உலாவி செயலிழப்புகளைத் தடுக்கிறது மற்றும் பயனர் அனுபவத்தை மேம்படுத்துகிறது. பாரிய தரவு ஏற்றுமதியைக் கையாளும் பயன்பாடுகளுக்கு இந்த மேம்படுத்தல்கள் குறிப்பாக பயனுள்ளதாக இருக்கும்.
இறுதியாக, குறுக்கு உலாவி பொருந்தக்கூடிய தன்மை மற்றும் பயனர் அனுபவத்தை கவனிக்கக்கூடாது. பெரும்பாலான நவீன உலாவிகள் ஆதரிக்கின்றன () பெறுங்கள் () மற்றும் குமிழ்அடிப்படையிலான பதிவிறக்கங்கள், சில பழைய பதிப்புகளுக்கு குறைவடையும் தீர்வுகள் தேவைப்படலாம். வெவ்வேறு சூழல்களில் சோதனை செய்வது அனைத்து பயனர்களும், அவர்களின் உலாவியைப் பொருட்படுத்தாமல், கோப்புகளை வெற்றிகரமாக பதிவிறக்க முடியும் என்பதை உறுதி செய்கிறது. ஏற்றுதல் குறிகாட்டிகள் மற்றும் முன்னேற்றப் பட்டிகளைச் சேர்ப்பது அனுபவத்தை மேம்படுத்துகிறது, பயனர்களுக்கு அவர்களின் பதிவிறக்க நிலை குறித்து கருத்துத் தெரிவிக்கிறது. இந்த மேம்படுத்தல்களுடன், டைனமிக் கோப்பு பதிவிறக்கங்கள் திறமையானவை மட்டுமல்ல, பாதுகாப்பான மற்றும் பயனர் நட்பாகவும் மாறும். .
அஜாக்ஸ் வழியாக டைனமிக் கோப்பு பதிவிறக்கங்களில் அடிக்கடி கேட்கப்படும் கேள்விகள்
- அங்கீகரிக்கப்பட்ட பயனர்கள் மட்டுமே கோப்புகளை பதிவிறக்கம் செய்ய முடியும் என்பதை நான் எவ்வாறு உறுதிப்படுத்துவது?
- போன்ற அங்கீகார முறைகளைப் பயன்படுத்தவும் JWT tokens அல்லது கோப்பு பதிவிறக்க API க்கான அணுகலைக் கட்டுப்படுத்த API விசைகள்.
- நினைவகத்தில் கையாள கோப்பு மிகப் பெரியதாக இருந்தால் என்ன செய்வது?
- செயல்படுத்தவும் Node.js streams துகள்களில் தரவை அனுப்ப, நினைவக பயன்பாட்டைக் குறைத்தல் மற்றும் செயல்திறனை மேம்படுத்துதல்.
- எக்ஸ்எம்எல் தவிர வேறு கோப்பு வகைகளுக்கு இந்த முறையைப் பயன்படுத்தலாமா?
- ஆம், நீங்கள் உருவாக்கி அனுப்பலாம் CSVஅருவடிக்கு JSONஅருவடிக்கு PDF, அல்லது ஒத்த நுட்பங்களைப் பயன்படுத்தி வேறு எந்த கோப்பு வகையும்.
- பதிவிறக்கங்களுக்கு சிறந்த பயனர் அனுபவத்தை எவ்வாறு வழங்குவது?
- பயன்படுத்தி முன்னேற்றப் பட்டியைக் காண்பி ReadableStream பதிவிறக்க நிலை குறித்த நிகழ்நேர கருத்துக்களை வழங்கவும்.
- இந்த முறை அனைத்து உலாவிகளிலும் செயல்படுமா?
- பெரும்பாலான நவீன உலாவிகள் ஆதரிக்கின்றன fetch() மற்றும் Blob, ஆனால் பழைய உலாவிகள் தேவைப்படலாம் XMLHttpRequest ஒரு குறைவடையும்.
டைனமிக் கோப்பு பதிவிறக்கங்களின் திறமையான கையாளுதல்
அஜாக்ஸ் வழியாக கோப்பு பதிவிறக்கங்களை செயல்படுத்துவது டெவலப்பர்களை சேவையகத்தை அதிக சுமை இல்லாமல் கோப்புகளை மாறும் வகையில் செயலாக்கவும் பரிமாறவும் அனுமதிக்கிறது. தொடர்ச்சியான சேமிப்பக அபாயங்கள் இல்லாமல், பயனர் உருவாக்கிய உள்ளடக்கத்தை பாதுகாப்பாக மீட்டெடுக்க முடியும் என்பதை இந்த முறை உறுதி செய்கிறது. மறுமொழி தலைப்புகள் மற்றும் குமிழ் பொருள்களின் சரியான கையாளுதல் இந்த நுட்பத்தை நெகிழ்வான மற்றும் திறமையானதாக ஆக்குகிறது.
ஈ-காமர்ஸ் விலைப்பட்டியல் முதல் நிதி அறிக்கைகள் வரை, டைனமிக் கோப்பு பதிவிறக்கங்கள் பல்வேறு தொழில்களுக்கு பயனளிக்கின்றன. டோக்கன்கள் போன்ற அங்கீகார நடவடிக்கைகளுடன் பாதுகாப்பை மேம்படுத்துதல் மற்றும் ஸ்ட்ரீம் அடிப்படையிலான செயலாக்கத்தைப் பயன்படுத்தி செயல்திறனை மேம்படுத்துதல் ஆகியவை நம்பகத்தன்மையை உறுதி செய்கின்றன. சரியான செயலாக்கத்துடன், டெவலப்பர்கள் தடுப்பு இல்லாத, உயர் செயல்திறன் கொண்ட அமைப்புகளை உருவாக்க முடியும், அவை அளவிடுதலைப் பராமரிக்கும் போது பயனர் கோரிக்கைகளை பூர்த்தி செய்கின்றன. .
நம்பகமான ஆதாரங்கள் மற்றும் தொழில்நுட்ப குறிப்புகள்
- BLOB மற்றும் API ஐப் பயன்படுத்தி ஜாவாஸ்கிரிப்டில் கோப்பு பதிவிறக்கங்களைக் கையாளும் அதிகாரப்பூர்வ ஆவணங்கள்: MDN வலை ஆவணங்கள்
- கோப்பு பதிவிறக்கங்களுக்கான "உள்ளடக்க-எதிர்ப்பு" உட்பட HTTP தலைப்புகளை அமைப்பதற்கான சிறந்த நடைமுறைகள்: எம்.டி.என் - உள்ளடக்க -பரவல்
- பின்தளத்தில் பயன்பாடுகளில் திறமையான கோப்பு கையாளுதலுக்கு Node.js ஸ்ட்ரீம்களைப் பயன்படுத்துதல்: Node.js ஸ்ட்ரீம் API
- பாதுகாப்பான அஜாக்ஸ் கோரிக்கைகள் மற்றும் அங்கீகாரத்துடன் கோப்பு பதிவிறக்கங்களை செயல்படுத்துவதற்கான வழிகாட்டி: OWASP அங்கீகார ஏமாற்றுத் தாள்
- ஜாவாஸ்கிரிப்ட் வழியாக கோப்புகளை உருவாக்கி பதிவிறக்குவது குறித்த வழிதல் விவாதத்தை அடுக்கி வைக்கவும்: அடுக்கு வழிதல்