Ερώτηση για browser caching.

Θέματα web + mobile design, development & cyberculture.

Ερώτηση για browser caching.

Δημοσίευσηαπό Zenor » 23.08.13, 1:00 pm

Καλησπέρα, χρησιμοποιώ τον παρακάτω .htaccess κώδικα για να κάνω cache διάφορα αρχεία στο site μου, όμως έχω μία ερώτηση, στις εικόνες jpg για παράδειγμα, έχω επιλέξει μία εβδομάδα ως το όριο. Αν κάποιος επισκεφτεί το site μου, και εγώ αργότερα στο όριο της μίας εβδομάδας(π.χ μετά από μία ώρα) ανεβάσω μία νέα εικόνα, αν ο επισκέπτης επιστρέψει θα μπορέσει να την δει ή θα πρέπει να κάνει refresh την σελίδα;

Κώδικας: Επιλογή όλων
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 day"
ExpiresByType application/pdf "access plus 1 year"
ExpiresByType text/x-javascript "access plus 1 week"
ExpiresByType application/x-shockwave-flash "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 1 week"
</IfModule>
Zenor
Member
 
Posts: 109
Εγγραφή: 31.08.07, 1:24 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό christosvcdc » 26.08.13, 7:38 am

Καλημέρα.
Δυστυχώς δεν γνωρίζω πως ακριβώς λειτουργεί το .htaccess αλλά μπορώ να σου πω το εξής με βεβαιότητα.
Όταν κάποιος "επισκέπτεται" κάποια σελίδα σου, ουσιαστικά ζητάει από τον σέρβερ σου να του στείλει το "περιεχόμενό" της το οποίο ο browser σου οφείλει να το απεικονίσει.
Το γεγονός ότι κάποιες εικόνες υπάρχουν αποθηκευμένες -από προηγούμενη επίσκεψή του- αυτό βοηθάει ούτως ώστε ο σέρβερ σου να μην ξαναστείλει ΟΛΟ το περιεχόμενο και έτσι είναι πιό γρήγορη η απεικόνιση και κατ΄ επέκταση η περιήγηση στο σάιτ σου.
Τώρα, αν εσύ προσθέσεις μια νέα εικόνα, τότε οπωσδήποτε αυτή θα περιέχεται στα νέα περιεχόμενα που θα στείλει ο σέρβερ σου.
Άρα αυτή θα υπάρχει στη σελίδα που θα ζητήσει να δει ο επισκέπτης σου.
...vidi vici...
christosvcdc
Senior Member
 
Posts: 842
Εγγραφή: 21.05.07, 10:16 am
Τοποθεσία: Αθήνα

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό Zenor » 26.08.13, 8:28 pm

Κατάλαβα, αν όμως κάνω κάποια αλλαγή σε κάποια υπάρχουσα εικόνα που την έχει αποθηκεύσει στην cache του δεν θα την φορτώσει, σωστά; Παρά μόνο όταν λήξει ο χρόνος που ορίζω στο .htacess. Αυτό μπορεί να λυθεί κάπως;
Zenor
Member
 
Posts: 109
Εγγραφή: 31.08.07, 1:24 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό cpulse » 27.08.13, 6:38 pm

Μπορεί να λυθεί με ένα κολπάκι που ανάλογα την εφαρμογή σου μπορείς να το εφαρμόσεις πιο εύκολα ή δύσκολα. Βάζεις ένα query με ένα τυχαίο αριθμό, ή με την ώρα του αρχείου. Δηλαδή εσύ σε ένα κανονικό HTML καλείς μια εικόνα έτσι:
<img src="/path/to/image.jpg" alt="image">

Για να κάνεις αυτό με το query βάζεις ένα λατινικό ερωτηματικό και μετά έναν αριθμό:
<img src="/path/to/image.jpg?1234" alt="image">

Αν ο αριθμός είναι τυχαίος τότε αυτή η εικόνα θα φορτώνει πάντα, και οι εκδόσεις της θα μπαίνουν στην cache του browser του χρήστη. Μπορείς όμως να ζητάς το "unix time stamp" το οποίο είναι ένας αριθμός που αντιπροσωπεύει τον χρόνο που δημιουργήθηκε η εικόνα. Δηλαδή το 27 Αυγούστου 2013 12μμ είναι ο αριθμός 1377604800. Οπότε γράφεις
<img src="/path/to/image.jpg?1377604800" alt="image">

Έτσι και πάλι μπαίνει στην cache, αλλά αλλάζει όταν αλλάξεις την εικόνα. Αν χρησιμοποιείς PHP όλο αυτό με το unix timestamp μπορεί να γίνει σχετικά αυτόματα:
<img src="/path/to/image.jpg?<?php echo filectime('/path/to/image.jpg'); ?>" alt="image">
/* code == fun */
Άβαταρ μέλους
cpulse
Senior Member
 
Posts: 848
Εγγραφή: 03.04.06, 11:42 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό notis » 27.08.13, 9:47 pm

ρε cpulse
μήπως είσαι phpas?
:)
Άβαταρ μέλους
notis
Master Admin
 
Posts: 3697
Εγγραφή: 23.02.04, 1:36 pm
Τοποθεσία: Corinth

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό cpulse » 27.08.13, 11:12 pm

με χει κάψει ο μικρός. ακόμα το θυμάσαι ε
/* code == fun */
Άβαταρ μέλους
cpulse
Senior Member
 
Posts: 848
Εγγραφή: 03.04.06, 11:42 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό notis » 28.08.13, 7:48 am

cpulse έγραψε:με χει κάψει ο μικρός. ακόμα το θυμάσαι ε


Ό,τι πιο κορυφαίο άκουσα!
By the way πολύ έξυπνο αυτό με την filectime :)
Άβαταρ μέλους
notis
Master Admin
 
Posts: 3697
Εγγραφή: 23.02.04, 1:36 pm
Τοποθεσία: Corinth

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό cpulse » 28.08.13, 3:11 pm

Υπάρχει και πιο έξυπνο για κάποιο που δεν έχει όρεξη να μπλέκεται με PHP και τέτοια. Versioning. Δηλαδή όταν θα θέλει να αλλάξει την εικόνα θα βάλει τον αριθμό 1. Όταν κάποτε ξαναχρειαστεί να το αλλάξει βάζει το 2 κ.ο.κ.
/* code == fun */
Άβαταρ μέλους
cpulse
Senior Member
 
Posts: 848
Εγγραφή: 03.04.06, 11:42 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό christosvcdc » 28.08.13, 4:00 pm

cpulse έγραψε:Υπάρχει και πιο έξυπνο για κάποιο που δεν έχει όρεξη να μπλέκεται με PHP και τέτοια. Versioning. Δηλαδή όταν θα θέλει να αλλάξει την εικόνα θα βάλει τον αριθμό 1. Όταν κάποτε ξαναχρειαστεί να το αλλάξει βάζει το 2 κ.ο.κ.

Ναι, αλλά αυτό δεν είναι ανάγκη να είσαι phpas για να το κάνεις! :)
...vidi vici...
christosvcdc
Senior Member
 
Posts: 842
Εγγραφή: 21.05.07, 10:16 am
Τοποθεσία: Αθήνα

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό cpulse » 28.08.13, 4:06 pm

Μη λέτε "phpas". Κάθε φορά που το λέτε ο Νότης πέφτει κάτω απ' την καρέκλα απ' τα γέλια και κινδυνεύει η υγεία του :D
/* code == fun */
Άβαταρ μέλους
cpulse
Senior Member
 
Posts: 848
Εγγραφή: 03.04.06, 11:42 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό christosvcdc » 28.08.13, 5:11 pm

cpulse έγραψε:Μη λέτε "phpas". Κάθε φορά που το λέτε ο Νότης πέφτει κάτω απ' την καρέκλα απ' τα γέλια και κινδυνεύει η υγεία του :D

:) Το γέλιο χαρίζει υγεία.
Υ.Γ.
Είναι από τις λίγες φορές πάντως που ο γραπτός λόγος δεν μπορεί να ειπωθεί με δυό διαφορετικά νοήματα.
...vidi vici...
christosvcdc
Senior Member
 
Posts: 842
Εγγραφή: 21.05.07, 10:16 am
Τοποθεσία: Αθήνα

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό notis » 28.08.13, 9:13 pm

Μη σταματάτε, τη βρήκα! :lol:
Άβαταρ μέλους
notis
Master Admin
 
Posts: 3697
Εγγραφή: 23.02.04, 1:36 pm
Τοποθεσία: Corinth

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό Zenor » 28.08.13, 11:07 pm

cpulse έγραψε:Μπορεί να λυθεί με ένα κολπάκι που ανάλογα την εφαρμογή σου μπορείς να το εφαρμόσεις πιο εύκολα ή δύσκολα. Βάζεις ένα query με ένα τυχαίο αριθμό, ή με την ώρα του αρχείου. Δηλαδή εσύ σε ένα κανονικό HTML καλείς μια εικόνα έτσι:
<img src="/path/to/image.jpg" alt="image">

Για να κάνεις αυτό με το query βάζεις ένα λατινικό ερωτηματικό και μετά έναν αριθμό:
<img src="/path/to/image.jpg?1234" alt="image">

Αν ο αριθμός είναι τυχαίος τότε αυτή η εικόνα θα φορτώνει πάντα, και οι εκδόσεις της θα μπαίνουν στην cache του browser του χρήστη. Μπορείς όμως να ζητάς το "unix time stamp" το οποίο είναι ένας αριθμός που αντιπροσωπεύει τον χρόνο που δημιουργήθηκε η εικόνα. Δηλαδή το 27 Αυγούστου 2013 12μμ είναι ο αριθμός 1377604800. Οπότε γράφεις
<img src="/path/to/image.jpg?1377604800" alt="image">

Έτσι και πάλι μπαίνει στην cache, αλλά αλλάζει όταν αλλάξεις την εικόνα. Αν χρησιμοποιείς PHP όλο αυτό με το unix timestamp μπορεί να γίνει σχετικά αυτόματα:
<img src="/path/to/image.jpg?<?php echo filectime('/path/to/image.jpg'); ?>" alt="image">


Αρκετά χρήσιμο, ευχαριστώ.
Zenor
Member
 
Posts: 109
Εγγραφή: 31.08.07, 1:24 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό Zenor » 30.08.13, 7:47 am

Για αρχεία CSS και JS, μπορεί να γίνει κάτι αντίστοιχο στο θέμα του caching;
Zenor
Member
 
Posts: 109
Εγγραφή: 31.08.07, 1:24 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό notis » 30.08.13, 2:51 pm

Φυσικά, κάθε αρχείο έχει file creation time
Άβαταρ μέλους
notis
Master Admin
 
Posts: 3697
Εγγραφή: 23.02.04, 1:36 pm
Τοποθεσία: Corinth

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό Zenor » 30.08.13, 5:11 pm

notis έγραψε:Φυσικά, κάθε αρχείο έχει file creation time


Ξέχασα να ρωτήσω, αν κάποια εικόνα φορτώνει μέσω css, τότε εκεί παίζει ρόλο το caching του css; Δηλαδή αν χρησιμοποιήσω το file creation time για το αρχείο css μου, και μετά κάνω κάποια αλλαγή σε εικόνα που φορτώνει μέσω του background-image π.χ θα λειτουργήσει η συγκεκριμένη μέθοδος;
Zenor
Member
 
Posts: 109
Εγγραφή: 31.08.07, 1:24 pm

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό notis » 30.08.13, 6:07 pm

Για να χρησιμοποιήσεις την file creation time αυτόματα μέσω της php function, θα χρειαστεί το css αρχείο σου να έχει επέκταση .php και να μεσολαβεί php κώδικας ώστε να δηλώνεται δυναμικά η filectime
Πολλές φορές το κάνω αυτό όταν έχω χρωματικές τιμές που αντλώ δυναμικά από βάση δεδομένων.

Για παράδειγμα στο <head> σου έχεις το
Κώδικας: Επιλογή όλων
<link href="css/styles.php" type="text/css">


και μέσα στο styles.php ως περιεχόμενο
Κώδικας: Επιλογή όλων
<?php
$color = getBodyBackroundColor() // κάποια function που διαβάζει τιμή από ΒΔ
?>
body{
background-color: #<?php echo $color;?>;
}
Άβαταρ μέλους
notis
Master Admin
 
Posts: 3697
Εγγραφή: 23.02.04, 1:36 pm
Τοποθεσία: Corinth

Re: Ερώτηση για browser caching.

Δημοσίευσηαπό Zenor » 30.08.13, 9:15 pm

Ευχαριστώ.
Zenor
Member
 
Posts: 109
Εγγραφή: 31.08.07, 1:24 pm


Επιστροφή στο II.I Ιστοσχεδίαση + Mobile + Διαδίκτυο

Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση : Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης

Visual Communication Designers Club

Το Visual Communication Designers Club, το μεγαλύτερο Ελληνικό online design forum, αποτελεί μια Ελληνική κοινότητα σχεδιαστών οπτικής επικοινωνίας, υπό την ευρύτερη έννοια του όρου, θέλοντας να συμπεριλάβει στα μέλη της κάθε ειδικότητα και βαθμίδα όσων σπουδάζουν ή εργάζονται στον χώρο της επικοινωνίας, έντυπης, διαδικτυακής, τρισδιάστατης ή εφαρμογών πολυμέσων