On my website, I have a field in the sql server that lists the image
location/name to display for an item. All is wonderful. How can I have
the site select an ‘image is no available’ image if the file name it
is looking for does not exist? Right now, it is just showing the
alternate text, which is the image file name it is looking for.
Would it be a big hit on performance to have it check the images dir
for the file name prior to rendering the page, or should it keep an
index somewhere of the files that are there, or am I complete off base
in how to approach this?
On Wed, Feb 07, 2007 at 07:49:20AM +0900, Jerry J. wrote:
On my website, I have a field in the sql server that lists the image
location/name to display for an item. All is wonderful. How can I have
the site select an ‘image is no available’ image if the file name it
is looking for does not exist?
By configuring your webserver appropriately. You don’t even mention what
webserver you use, so you’re not going to get a more specific answer
than
that here.
However, as an example, if you are running Apache httpd then you can ask
this question on the Apache httpd mailing list.
Right now, it is just showing the
alternate text, which is the image file name it is looking for.
Would it be a big hit on performance to have it check the images dir
for the file name prior to rendering the page
Web servers don’t render pages - web browsers do. Web servers response
to
HTTP requests, and send back the HTML for the page. What the browser
does
with it is its own responsibility.
If the HTML contains a reference to an image, a separate HTTP request is
made by the browser to retrieve the image. If the image doesn’t exist
(web
server returns 404 Not Found) then it’s up to the browser what to do
next.
Many display a “broken image” icon.
Brian.
I understand that browsers render the page, I could have worded that
better. What I was meaning was when a request is sent, would it be a
serious hit on performance to check for the image file, and if not
present, default to the ‘no image available’ image. Or would it be
best to have an index of the image file names and when a request is
sent to the server, it checks the index, and if the image file is not
listed, default to the ‘no image available’ image.
At the moment, I am running Webrick. I am trying to get IIS to work with
RoR.
On Wed, Feb 07, 2007 at 11:00:38AM +0900, Jerry J. wrote:
I understand that browsers render the page, I could have worded that
better. What I was meaning was when a request is sent, would it be a
serious hit on performance to check for the image file, and if not
present, default to the ‘no image available’ image.
You mean: when the webserver gets a request for /images/foo.png, and
foo.png
does not exist, it returns a default image instead?
Yes this is possible. Under Apache you would use mod_rewrite, using the
-f
test to check if a file exists.
Or would it be
best to have an index of the image file names and when a request is
sent to the server, it checks the index, and if the image file is not
listed, default to the ‘no image available’ image.
I think you are talking about testing the existence of a file in the
filesystem, versus testing the existence of a key in a hash. The hash
lookup
will be a bit faster, but I don’t think you’ll see much difference in
practice; if lots of clients are accessing non-existent files, then the
directory will be cached by the O/S anyway.
At the moment, I am running Webrick.
Then I guess you can serve /images/ from a small piece of Ruby which
implements either of the above strategies.
I am trying to get IIS to work with RoR.
No idea how you would do this with IIS, apart from continuing to map
/images/* to a piece of Ruby.
On Tue, 06 Feb 2007 23:49:20 +0100, Jerry J. [email protected]
wrote:
Right now, it is just showing the
alternate text, which is the image file name it is looking for.
Would it be a big hit on performance to have it check the images dir
for the file name prior to rendering the page, or should it keep an
index somewhere of the files that are there, or am I complete off base
in how to approach this?
An index will probably flat-out outperform a system call on access, with
the cost being in recomputation of said. However, benchmark. A few
stat()s
per request probably won’t be a bottleneck anyway.
David V.