დიდი ხნის პაუზის შემდეგ ვუბრუნდები ბლოგერობას
თავისთავად საინტერესო პოსტით(იმედი მაქვს რომ ეს ასეა)…
ჩემი ბოლო ერთი წლის საქმიანობა მჭიდროდ არის დაკავშირებული ე.წ. Client Side დეველოპმენტთან, რაც თავისთავად საკმაოდ ბევრ ნიუანსს მოიცავს. თუმცა ამ შემთხვევაში ყურადღების გამახვილება მინდა CSS და JS(JavaScript) ფაილებზე, მათ ზომებზე და კომპრესიის მეთოდებზე…
პრობლემა
თავისთავად ცხადია როდესაც ვმუშაობთ RIA ტიპის საიტებზე/აპლიკაციებზე, რესურსის ვიზუალური დეტალები მთლიანად გატანილია CSS – ში და არ არის საკვირველი ის ფაქტი რომ კომპლექსური რესურსისათვის CSS ფაილების ზომა ხშირად საკმაოდ იზრდება და 25/50 კილობაიტს ან კიდევ უფრო მეტს აღწევს.
უფრო მეტად მნიშვნელოვანია ის ფაქტი რომ ასეთი ტიპის რესურსის შექმნისას გარდავალია საკმაოდ დიდი ოდენობის JavaScript კოდის გამოყენება. არ აქვს არანაირი მნიშვნელობა მას ჩვენით ვწერთ, ვიყენებთ უკვე გამზადებულ ბიბლიოთეკებს, თუ ამ ყველაფერს ერთად. ფაქტი მდგომარეობს იმაში რომ რესურსის მასშტაბურობიდან და ფუნქციონალური დატვირთვიდან გამომდინარე ხშირად JavaScript კოდის რაოდენობა შესაძლოა გასცდეს 200 კილობაიტს.
აღნიშნული დეტალები უარყოფითად აისახება როგორც სერვერზე ასევე კლიენტზე:
1) 200/300 კილობაიტი CSS/JavaScript კოდის ჩატვირთვას საკმაო დრო ესაჭიროება(ცხადია რომ ლოკალურ რესურსებზე ეს დიდად შესამჩნევი არ იქნება, მაგრამ ეს არ არის არგუმენტი);
2) სერვერის ტრაფიკი საგრძნობლად იზრდება. მითუფრო თუ რესურსს ბევრი მომხმარებელი ჰყავს;
გამოსავალი
JavaScript – ის შემთხვევაში შესაძლოა გამოვიყენოთ დენ ედვარდსის მიერ შექმნილი ინსტრუმენტი, რომლის მეშვეობითაც არის დაკომპრესირებული ისეთი ცნობილი JavaScript ბიბლიოთეკები, როგორიცაა jQuery და MooTools. ამ ინსტრუმენტის ეფექტურება შესაძლებელია გადაამოწმოთ თავად და დარწმუნდებით რომ შედეგი მართლაც შესანიშნავია, მისი მეშვეობით შესაძლებელია ფაილის მოცულობის მესამედით შემცირება.
ამ ინსტრუმენტის რამდენიმე ენის ვერსია არსებობს მათ შორის PHP5 და PHP4 – ისთვის, რომლის მეშვეობითაც მარტივად შესაძლებელია პროექტში არსებული ყველა JS ფაილის დაკომპრესირება.
CSS – ისთვის მსგავს ინსტრუმენტს არ ვიცნობ და სიმართლე ითქვას არც მიძებნია მაგრამ…
გარდა აღნიშნული გამოსავალისა არსებობს კიდევ ორი(შესაძლო უფრო მეტიც) მეთოდი. ესენია:
1) PHP – ს მეშვეობით კომპრესია, კერძოდ კი gzip – ის გამოყენებით, და რომლის განხილვასაც ამ პოსტში არ ვაპირებ რადგან მიმაჩნია რომ არასწორი და არაეფექტური საშუალებაა;
2) Apache – ს მოდული mod_deflate;
მოდულის მცირე აღწერა:
The mod_deflate module provides the DEFLATE output filter that allows output from your server to be compressed before being sent to the client over the network.
რაც მოკლედ ნიშნავს იმას რომ კონტენტის კომპრესია მოხდება სერვერზე მანამდე სანამ იგი გამოიგზავნება კლიენტის მხარეს.
გამოყენება
პირველ რიგში ამისათვის საჭიროა რომ ჩატვირთული იყოს Apache – ს mod_deflate მოდული:
LoadModule deflate_module modules/mod_deflate.so
ასევე Mac OS X – ზე XAMPP – ს გამოყენების შემთხვევაში მოძებნეთ შემდეგი სტრიქონი:
AllowOverride AuthConfig
და გადააკეთეთ იგი შემდეგნაირად:
AllowOverride all
ამ ყოველივეს შემდეგ თქვენი აპლიკაციის ძირეულ კატალოგში შექმენით .htaccess ფაილი და ჩაწერეთ მასში შემდეგი კოდი:
მხოლოდ JavaScript ფაილების კომპრესიისათვის
<Files *.js> SetOutputFilter DEFLATE </Files>
ან
JS და CSS ფაილების კომპრესიისათვის
<FilesMatch "\.(css|js)$"> SetOutputFilter DEFLATE </FilesMatch>
შედეგი შეგიძლიათ გადაამოწმოთ FireBug – ის მეშვეობით, კერძოდ კი Net->JS ქვეგანყოფილებაში;
ასევე საინტერესოა ის დეტალი რომ, ეს მეთოდი კომპრესიას უკეთებს ზემოთ ხსენებული დენ ედვარდსის ინსტრუმენტით დაკომპრესირებულ ფაილებსაც რაც გაცილებით უკეთეს შედეგს იძლევა
ტეგები: Apache
ძალიან მაგარი პოსტია!
უდიდესი რესპექტი სოს
გაიხარე
ძალიან კარგი პოსტია და უაღრესად საჭირო ინფო!
[...] შევეხე JavaScript ფაილების კომპრესიას. ძველი პოსტის მიხედვით თუ ვიმსჯელებთ არცთუ ისე [...]
და თუ იცით ქართულ ჰოსტინგებზე ჩართული იქნება ეს ფუნქცია აპაჩესი? თუ უნდა დავრეკო?
ბევრ ქართულ ჰოსტინგზე ჩართულია ეს მოდულები.
ნუ რა თქმა უნდა კავკაზუსის ჰოსტინგის გარდა…